Как я могу сделать ширину счетчика равной самой большой доступной ширине элемента
Я понимаю, что даже использую wrap_content
для своего счетчика (я избегаю использования match_parent
, поскольку я не хочу, чтобы spinner был слишком длинным), и используя match_parent
для просмотра элемента-плеера и выпадающего элемента,
Я все еще считаю, что ширина счетчика не такая же, как наибольшая ширина элемента
![enter image description here]()
Как вы можете видеть, UnitedKingdom
не подходит.
Итак, если я выберу UnitedKingdom
, только счетчик изменит размер
![enter image description here]()
Как я могу сделать spinner resize наибольшей доступной шириной элемента, даже без явного выбора самого большого элемента?
Мой spinner XML
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" />
и мои обратные ссылки XML
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text_view_0"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="10dp"
android:gravity="center_vertical" />
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/checked_text_view_0"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="48dp"
android:minHeight="48dp"
android:drawablePadding="10dp" />
Ответы
Ответ 1
Вы должны иметь возможность получить желаемый эффект, указав ширину выпадающего списка как WRAP_CONTENT
:
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:dropDownWidth="wrap_content"
android:spinnerMode="dropdown" />
Это будет измерять до 15 элементов адаптера счетчика, чтобы определить ширину, которую он должен использовать.
Ответ 2
Я просто "решаю" проблему, используя
<Spinner
android:id="@+id/country_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="200dp"
android:layout_marginBottom="10dp" />
200dp - это просто значение try-n-error, чтобы убедиться, что все элементы в раскрывающемся списке видны.
Ответ 3
Поместите свой TextView внутри LineanLayout в Spinner Item XML,
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text_view_0"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="10dp"
android:gravity="center_vertical" />
</LinearLayout>
И передайте свой идентификатор TextView в конструктор пользовательских адаптеров
CustomAdapter adapter = new CustomAdapter(this,R.layout.spinner_item,R.id.text_view_0,arraylist);
Конструктор
public CustomAdapter(Context context, int resource, int textViewId, ArrayList<String> resultList) {
super(context, resource, textViewId, resultList);
...
...
}
Ответ 4
Установите ширину 0dp и вес макета 1. Следующий размер изменит его для вас.
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="?android:attr/actionBarSize"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/test label"/>
<Spinner
android:id="@+id/test_spinner"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:dropDownWidth="wrap_content"
android:layout_weight="1"
android:prompt="@string/test_prompt"
android:spinnerMode="dropdown" />
</LinearLayout>
Ответ 5
В таких случаях, когда вы хотите перечислить всю страну или большой список
Попробуйте: spinnerMode = "dialog", как показано ниже:
<Spinner
android:id="@+id/spinnerId"
android:layout_width="wrap_content"
android:dropDownWidth="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:spinnerMode="dialog"/>
Ответ 6
Попробуйте это: android:layout_width="fill_parent"