views:

299

answers:

2

I have a Spinner with an ArrayAdapter that feeds Values into it. The layout for this views looks something like this:

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

The Problem is that the text is to long for the view and the result is a very very ugly spinner. As can be seen in the screenshot:

alt text

I tried to pass the Id of my own TextView into the Adapter but everytime the spinner should be shown I get an Exception that the Id I supplied is not valid:

04-26 17:38:39.695: ERROR/AndroidRuntime(4276): android.content.res.Resources$NotFoundException: Resource ID #0x7f09003a type #0x12 is not valid

Where do I have to define the TextView? In a separate xml file? With a surrounding viewgroup?

It would help me a lot if I could see an example of the adapter initialization and the textview definition?

+1  A: 

Override the getView method of the Adapter to create a custom list view item.

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;
}

Also when you create the adapter you can pass in a layout to use for the item, so in that case ConvertView would be a RelativeLayout or LinearLayout.

BrennaSoft
A: 

The answer was to remove the padding from the definition of the Spinner. Every time I set the padding of the Spinner the Text gets out of shape.

I assume that the Spinner uses paddingRight to assure that the text is not running into the spinner icon. If I now define a padding the paddinRight isn't working anymore and the Text is shown as can be seen in the screenshot.

Janusz