【发布时间】:2023-03-26 16:55:01
【问题描述】:
我有一个AutoCompleteTextView 的基本活动。根据 Material Design 文档,我正在尝试将其用作公开的下拉菜单 [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 指南中的建议进行了此实施。我可能会尝试使用微调器。