2012-10-31 10 views
14

Chcę dodać obraz obrotowemu Próbowałem tak:Jak dodać zdjęcie do pokrętła w Androidzie

<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/myImage" /> 

Ale z tym kodem znakiem strzałki w dół na spinner staje się niewidoczny proszę mi powiedzieć jak rozwiązać ten problem!! Chcę zrobić dokładnie tak, jak w tym obrazie

enter image description here

+0

chcesz zmienić tło turbinki? –

+1

http://stackoverflow.com/questions/3609231/how-is-it-possible-to-create-a-spinner-with-images-instead-of-text –

Odpowiedz

14

Tworzenie row.xml w /res/layout/. Aby ustawić układ w każdym rzędzie.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <ImageView 
    android:id="@+id/icon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/icon"/> 
    <TextView 
    android:id="@+id/weekofday" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 
</LinearLayout> 

w pliku Java dodać ten kod jako

Spinner mySpinner = (Spinner)findViewById(R.id.spinner); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
    R.layout.row, R.id.weekofday, YourArrayHere); 
    mySpinner.setAdapter(adapter); 
+0

witamy z powrotem @ram wielką odpowiedzią. –

+0

Dziękuję @hardikjoshi –

+0

Dude, gdzie jest (zdefiniowane R.id.spinner? – Siddharth

5

W moim przypadku właśnie używany standardowy układ przedmiotów spinner i zastąpić tylko trochę się ArrayAdapter.

private class PaymentTypeArrayAdapter extends ArrayAdapter<PaymentType> { 

    public PaymentTypeArrayAdapter(Context context) { 
     super(context, android.R.layout.simple_spinner_item); 

     addAll(PaymentType.getPaymentTypes()); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     TextView label = (TextView) super.getView(position, convertView, parent); 

     PaymentType paymentType = getItem(position); 
     label.setText(paymentType.getStringResourceId()); 
     label.setCompoundDrawablesWithIntrinsicBounds(0, 0, paymentType. 
       getImageResourceId(), 0); 

     return label; 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     TextView label = (TextView) super.getDropDownView(position, convertView, parent); 

     PaymentType paymentType = getItem(position); 
     label.setText(paymentType.getStringResourceId()); 
     label.setCompoundDrawablesWithIntrinsicBounds(0, 0, paymentType. 
       getImageResourceId(), 0); 

     return label; 
    } 
} 

Następnie skonfigurować adapter dla turbinki:

mPaymentTypeArrayAdapter = new PaymentTypeArrayAdapter(getContext()); 
    setAdapter(mPaymentTypeArrayAdapter); 

W tym podejściu kluczem było wykorzystanie setCompoundDrawablesWithIntrinsicBounds dla etykiety

Powiązane problemy