我有一个带有ArrayAdapter的Spinner,可以将值提供给它。此视图的布局如下所示:
<TextView
android:text="Household Income: "
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical" />
<Spinner
android:id="@+id/incomespinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip" />
问题是文本对于视图来说很长,结果是一个非常非常丑陋的微调器。从截图中可以看出:
alt text http://janusz.de/~janusz/spinner.png
我试图将我自己的TextView的Id传递给适配器,但是每次应该显示微调器我都会得到一个异常,即我提供的Id无效:
04-26 17:38:39.695: ERROR/AndroidRuntime(4276): android.content.res.Resources$NotFoundException: Resource ID #0x7f09003a type #0x12 is not valid
我在哪里定义TextView?在一个单独的xml文件中?有周围的视图组?
如果我能看到适配器初始化和textview定义的示例,那对我有很大帮助吗?
答案 0 :(得分:5)
覆盖适配器的getView方法以创建自定义列表视图项。
View getView(int position, View convertView, ViewGroup parent) {
TextView tv = null;
if(covertView instanceof TextView) {
tv = (TextView) convertView;
} else {
tv = new TextView(this);
tv.setText("Awesome Text");
}
return tv;
}
此外,当您创建适配器时,您可以传入用于项目的布局,因此在这种情况下,ConvertView将是RelativeLayout或LinearLayout。
答案 1 :(得分:3)
答案是从Spinner的定义中删除填充。 每次我设置Spinner的填充时,Text都会变形。
微调器drawable正在使用九个补丁中的填充框来确定绘制内容的位置。如果我手动设置填充,将覆盖填充框中填充的定义。
如果除了填充框之外还要设置填充,则需要将paddinbox中的所有内容包装到另一个Layout容器中。
答案 2 :(得分:1)
使用/home/user/android-sdk-linux/tools/./draw9patch(用于linux),在Windows上转到android-sdk-windows目录下的工具并执行draw9patch。
并使用so image,例如:
注意图像中的黑色线条。 (这条黑线是由draw9patch生成的)
图像结果添加到扩展文件9,例如:img.9.png(IMG EXPANSIVE HORIZONTAL AND VERTICAL)