Как добавить изображение в spinner в Android

Я хочу добавить изображение в spinner. Я пробовал:

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

Но с этим кодом знак стрелки вниз на spinner становится невидимым, пожалуйста, скажите мне, как решить эту проблему !! Я хочу сделать точно как на этом изображении

Введите описание изображения здесь

Solutions Collecting From Web of "Как добавить изображение в spinner в Android"

Создайте row.xml в /res/layout/ . Чтобы настроить макет для каждой строки.

  <?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> 

И в файле Java добавьте этот код как

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

В моем случае я только что использовал стандартную компоновку для элементов spinner и немного переопределить 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; } } 

Затем настройте адаптер для вашего счетчика:

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

В этом подходе ключевым моментом было использование setCompoundDrawablesWithIntrinsicBounds для метки