【问题标题】:AutoCompleteTextView dropdown not showingAutoCompleteTextView 下拉菜单未显示
【发布时间】: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 指南中的建议进行了此实施。我可能会尝试使用微调器。

标签: android material-design


【解决方案1】:

您尚未在AutoCompleteTextView 中添加阈值。 只需添加方法 -

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

【讨论】:

  • 这不应该是必需的,没有它应该可以工作。
  • 不幸的是,这并没有解决它
  • 您是否在文本视图中输入任何字符?
  • 不,我正在尝试制作一个禁用打字的微调器
  • 将阈值改为0后尝试,setThreshold(0)
【解决方案2】:

我没有正确设置视图绑定。 修复在onCreate():

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多