2010-04-26 21 views
5

我有一个微调器和一个ArrayAdapter,它向它提供值。该视图的布局看起来是这样的:如何自定义Spinner中的TextView?

 <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无效:

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定义的例子,它会帮助我很多吗?

回答

3

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

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

如果您想要除填充框外还需要设置填充,则需要将该paddinbox内的所有内容都包含到其他布局容器中。

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

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

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

enter image description here

关注的德黑线图像。 (这条黑线是由draw9patch生成的)

图像结果加上扩展文件9,例如:img.9.png(IMG EXPANSIVE HORIZONTAL AND VERTICAL)

相关问题