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

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
@SamChen Я пытаюсь сделать спиннер, поэтому набор текста отключен - см. android:inputType = "none" . Я также попытался изменить это на android:inputType = "autoComplete", а затем набрал, но это не помогло.
Попробуйте android:completionThreshold = "0"
А почему бы вам просто не использовать Spinner?
@SamChen установка порога на 0 не помогла. Я пошел на эту реализацию, как это рекомендуется в рекомендациях MD. Вместо этого я мог бы попробовать спиннер.
Вы не добавили пороговое значение в AutoCompleteTextView.
Просто добавьте метод -
binding.positionPickerField.setThreshold(1); // will start working from first character
Это не должно быть нужно, это должно работать без этого.
это не исправило к сожалению
Вы вводите какой-либо символ в текстовом виде?
Нет, я пытаюсь сделать счетчик с отключенным набором текста.
Попробуйте изменить пороговое значение на 0, setThreshold(0)
@tronku установка порогового значения на 0 не помогла
Я не правильно настроил viewbinding.
Исправление было в onCreate():
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
https://developer.android.com/topic/libraries/view-binding#activities
Попробуйте ввести что-нибудь человек.