1

在我的 android 应用程序中,我使用的AutoCompleteTextview是用户必须在其上选择名称的名称。如果用户输入了一些文本(假设用户没有从 中选择文本AutoCompleteTextview),它也会被显示。

所以,现在我想允许用户只选择文本,不允许输入文本。我用过

r_code.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            r_code.showDropDown();
            return false;
        }
    });

当用户触摸时,此代码将显示所有的名称AutoCompleteTextview。但它允许用户输入一些文本。如上所述,我不想让用户输入文本,他们必须选择文本。有人可以说如何解决我的问题。

提前致谢

4

4 回答 4

5

我做的和你基本一样。

1)我将 设置OnTouchListener为消耗点击,所以视图没有聚焦并且键盘没有显示。

autoCompleteTextView.setOnTouchListener(object : OnTouchListener {
            override fun onTouch(v: View?, event: MotionEvent?): Boolean {
                autoCompleteTextView.showDropDown()
                return true
            }
        })

2)我在我的xml中添加了两件事。

我设置focusable="false"android:focusableInTouchMode="false"。这样,当用户单击AutoCompleteTextView.

<AutoCompleteTextView
        android:id="@+id/autoCompleteTextView"
        style="@style/Atomic.Body1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:focusable="false"
        android:focusableInTouchMode="false"/>

这里唯一的缺点是它不会被聚焦imeOptions="actionNext",因此会被跳过。

于 2019-07-23T07:38:29.297 回答
1

如果数组不包含输入的字符串,请使用 arrayadapter 中的字符串检查输入的字符串 要求用户选择另一个字符串

于 2013-02-27T11:06:39.650 回答
0

如果要将选择限制为已知列表,可以使用 a Spinner,有关详细信息,请参阅Spinners 指南

于 2013-02-27T10:55:21.130 回答
0

添加 KeyListener r_code.setKeyListener 并处理点击的键。我认为如果您返回 true,则密钥将被消耗。

于 2013-02-27T11:13:48.093 回答