Выпадающий список AutoCompleteTextView не отображается

У меня есть основное занятие с AutoCompleteTextView. Я пытаюсь использовать его как открытое выпадающее меню [1] для выбора из списка параметров в соответствии с документацией по дизайну материалов. [2]

Однако, когда я нажимаю TextInputLayout, раскрывающийся список не появляется, хотя стрелка переворачивается.

Что я пропустил?

Выпадающий список AutoCompleteTextView не отображается

MainActivity.kt:

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(R.layout.activity_main) // edit, the mistake is here - see my answer.

        val items = listOf("Option 1", "Option 2", "Option 3", "Option 4")
        val adapter = ArrayAdapter(this, R.layout.list_item, items)
        binding.positionPickerField.setAdapter(adapter)
    }
}

activity_main.xml:

<?xml version = "1.0" encoding = "utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    tools:context = ".MainActivity">

    <com.google.android.material.textfield.TextInputLayout
        android:id = "@+id/menu"
        style = "@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:layout_marginLeft = "16dp"
        android:layout_marginRight = "16dp"
        android:hint = "enter your starting position"
        app:layout_constraintBottom_toBottomOf = "parent"
        app:layout_constraintLeft_toLeftOf = "parent"
        app:layout_constraintRight_toRightOf = "parent"
        app:layout_constraintTop_toTopOf = "parent">

        <AutoCompleteTextView
            android:id = "@+id/position_picker_field"
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:inputType = "none" />

    </com.google.android.material.textfield.TextInputLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

list_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"
    android:ellipsize = "end"
    android:maxLines = "1"
    android:padding = "16dp"
    android:textAppearance = "?attr/textAppearanceSubtitle1" />

[1] https://material.io/components/menus#exposed-dropdown-menu [2] https://material.io/components/menus/android#exposed-dropdown-menus

Попробуйте ввести что-нибудь человек.

Sam Chen 23.12.2020 18:50

@SamChen Я пытаюсь сделать спиннер, поэтому набор текста отключен - см. android:inputType = "none" . Я также попытался изменить это на android:inputType = "autoComplete", а затем набрал, но это не помогло.

Kirk 23.12.2020 18:52

Попробуйте android:completionThreshold = "0"

Sam Chen 23.12.2020 18:56

А почему бы вам просто не использовать Spinner?

Sam Chen 23.12.2020 18:58

@SamChen установка порога на 0 не помогла. Я пошел на эту реализацию, как это рекомендуется в рекомендациях MD. Вместо этого я мог бы попробовать спиннер.

Kirk 23.12.2020 19:02
0
5
1 266
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы не добавили пороговое значение в AutoCompleteTextView. Просто добавьте метод -

binding.positionPickerField.setThreshold(1); // will start working from first character  

Это не должно быть нужно, это должно работать без этого.

Nicolas 23.12.2020 18:43

это не исправило к сожалению

Kirk 23.12.2020 18:43

Вы вводите какой-либо символ в текстовом виде?

tronku 23.12.2020 18:52

Нет, я пытаюсь сделать счетчик с отключенным набором текста.

Kirk 23.12.2020 18:53

Попробуйте изменить пороговое значение на 0, setThreshold(0)

tronku 23.12.2020 18:54

@tronku установка порогового значения на 0 не помогла

Kirk 23.12.2020 19:01
Ответ принят как подходящий

Я не правильно настроил viewbinding. Исправление было в onCreate():

binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)

https://developer.android.com/topic/libraries/view-binding#activities

Другие вопросы по теме