6

我有一个带有 ArrayAdapter 的 Spinner,它可以将 Values 输入其中。此视图的布局如下所示:

        <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"  />

问题是文本太渴望视图,结果是一个非常丑陋的微调器。如屏幕截图所示:

替代文字
(来源:janusz.de 上的 janusz

我试图将我自己的 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 定义的示例,会对我有很大帮助吗?

4

3 回答 3

6

覆盖 Adapter 的 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。

于 2010-04-26T18:01:52.713 回答
3

答案是从 Spinner 的定义中删除填充。每次我设置 Spinner 的填充时,文本都会变形。

可绘制的微调器使用九个补丁中的填充框来确定在哪里绘制内容。如果我手动设置填充,则填充框中的填充定义将被覆盖。

如果您想在填充框之外设置填充,则需要将该填充框内的所有内容包装到一个额外的布局容器中。

于 2010-05-06T11:50:24.400 回答
1

使用 /home/user/android-sdk-linux/tools/./draw9patch (它适用于 linux),在 Windows 上转到 android-sdk-windows 目录上的工具并执行 draw9patch。

并使用这样的图像,例如:

在此处输入图像描述

注意图像中的黑色线条。(这条黑线是由draw9patch生成的)

图像结果添加到扩展文件 9,例如:img.9.png(IMG 扩展水平和垂直)

于 2012-01-25T13:41:29.980 回答