Подтвердить что ты не робот

Как я могу сделать ширину счетчика равной самой большой доступной ширине элемента

Я понимаю, что даже использую 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" />
4b9b3361

Ответ 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"