Как изменить размер элементов в Spinner с несколькими вариантами выбора?

Я просто показываю spinner с множественным выбором на основе этого ответа stackoverflow (см. Ответ @Destil) . Здесь моя проблема в том, что я не могу изменить размер элементов в Spinner с несколькими вариантами. Как изменить размер каждой позиции?

Как я знаю, вам придется использовать пользовательский адаптер и переопределить методы getDropDown и getView. Вы сможете настроить каждый элемент, настраивающий макет.

Ну … слова хорошие, например, лучше, попробуйте что-то вроде этого:

 public class CustomStringArrayAdapter extends ArrayAdapter<String> { private Activity myActivity; public CustomStringArrayAdapter(Context context, int layoutResourceId, int textViewResourceId, List<String> objects, Activity act) { super(context, layoutResourceId, textViewResourceId, objects); this.myActivity = act; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { return getCustomView(position, convertView, parent); } public View getCustomView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = myActivity.getLayoutInflater(); View row = inflater.inflate(R.layout.spinner_layout, parent, false); TextView label = (TextView) row.findViewById(R.id.spinner_textview); label.setText(getItem(position)); LinearLayout layout = (LinearLayout) row.findViewById(R.id.spinner_linear_layout); return row; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = myActivity.getLayoutInflater(); View row = inflater.inflate(R.layout.spinner_layout, parent, false); TextView label = (TextView) row.findViewById(R.id.spinner_textview); label.setText(getItem(position)); return row; } } 

И макет:

 <?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="50dp" android:layout_gravity="center" android:gravity="center" android:background="@drawable/transparent" android:id="@+id/spinner_linear_layout"> <TextView android:layout_height="fill_parent" android:layout_width="fill_parent" android:gravity="center" android:layout_gravity="center" android:textSize="21sp" android:singleLine="true" android:id="@+id/spinner_textview" android:textColor="@color/black" /> </LinearLayout> 

(Но это всего лишь образец, если вы хотите изменить размер в зависимости от выбора, вы можете добавить логическое mSelected для каждого объекта и изменить представление в зависимости от этого логического)

Изменить: Затем в MultiSpinner:

Удали это :

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, new String[] { spinnerText }); setAdapter(adapter); 

И добавьте новый пользовательский адаптер в прядильщик:

 MultiSpinner mMultiSpinner = (MultiSpinner) findViewById(R.id.multispinner); mMultiSpinner.setAdapter(mCustomArrayAdapter);