AutoCompleteTextView устанавливает ширину для самого длинного элемента адаптера - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть AutoCompleteTextView (как часть Открытого раскрывающегося меню ). Я не хочу устанавливать фиксированную ширину, вместо этого ширина будет определяться самым широким элементом из адаптера. Поэтому я установил ширину wrap_content, но она меняется каждый раз, когда выбирается другой элемент.

Пример: в настоящее время у меня есть два элемента:

"short" (shown by default)
"longitem"

Это отображается как

enter image description here

Теперь, когда я выбираю «длинный элемент», ширина увеличивается:

enter image description here

Ну, я понимаю, что это происходит. Но это очень раздражает. Вместо всех этих адаптаций размера я хочу, чтобы AutoCompleteTextView постоянно (независимо от того, какой элемент выбран) имел размер, который он имеет при выборе «longitem». Как я могу это сделать?

Используемый код (как в официальной раскрытой раскрывающейся документации )

dropdown_menu_popup_item. xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:padding="16dp"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="?attr/textAppearanceSubtitle1"
tools:text="some item (tool text)" />

файл макета:

<AutoCompleteTextView
    android:id="@+id/exposed_dropdown"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:editable="false"
    android:text="short"
    />

Адаптер (Kotlin)

val myValues = arrayOf("short", "longitem")

val adapter = ArrayAdapter<String>(
    requireContext(), 
    R.layout.dropdown_menu_popup_item,
    myValues
)

binding.exposedDropdown.setAdapter(adapter)
...