【问题标题】:Android AutoCompleteTextView only works for the first word?Android AutoCompleteTextView 仅适用于第一个单词?
【发布时间】:2017-07-22 20:20:23
【问题描述】:

我正在尝试使用自动完成文本,但遇到了一个小问题。

当我尝试将第一个单词输入为国家之一时,它工作正常, 但是如果我尝试输入任何其他内容,然后其中一个国家没有任何反应,例如:"ger"(会给我德国)和:"hello ger"(不会给德国)

如果我只单击一次输入并从第二行开始,也会发生同样的事情,它只适用于第一个单词和第一行。此外,如果我确实将它用于第一个单词并尝试再次使用它,例如 Germany(来自自动完成)然后输入 ger,则不会弹出任何内容。

知道如何使它适用于文本的其余部分或如何控制它(将其设置在选定的或对齐的位置上或之后?

代码:

 AutoCompleteTextView et1;
    private static final String[] COUNTRIES = new String[] {
            "Belgium", "France", "Italy", "Germany", "Spain"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        et1=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, COUNTRIES);
        et1.setAdapter(adapter);
        et1.setThreshold(0);
    }

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main3"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.asaf1.workersreports.Main3Activity">

    <AutoCompleteTextView
        android:text=""
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/autoCompleteTextView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:textAlignment="viewEnd"
        android:gravity="right|top"/>
</RelativeLayout>

【问题讨论】:

    标签: android autocompletetextview


    【解决方案1】:

    您必须创建自定义AutoCompleteTextView。在Adapter 中实现Filter 类并覆盖performFilterring() 方法。在这种方法中,您必须编写一些与结果匹配的代码。在您的情况下,您必须检查输入字符串是否包含您的字符串列表之一。

    检查使用自定义适配器的链接: Custom AutoCompleteTextView behaviorAutoCompleteTextView backed by CursorLoader

    【讨论】:

      【解决方案2】:

      提高您的阈值以获取来自...的建议 如果你想在输入1st character之后搜索,

      et1.setThreshold(1);
      

      如果你想在输入2nd character之后搜索,

      et1.setThreshold(2);
      

      【讨论】:

      • 我测试它似乎是弹出建议的字符数,但在第一次选择后它仍然停止工作(如果阈值为 2,“ge”将触发,如果这个 1 只是“g”将触发器)这不是问题它仍然只对第一个单词有效 exp :hello g = fail and g =works ?
      猜你喜欢
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多