AutoCompleteTextView在输入第一个字符时无法工作

17
我的AutoCompleteTextView在我输入文本框的第一个字符时无法工作,但当我输入第二个字符时开始显示下拉菜单。可能是什么原因?
<AutoCompleteTextView
    android:id="@+id/autocomplete_name"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="7"
    android:background="@drawable/edittextback"
    android:ems="10"
    android:textSize="15sp"
    android:hint="@string/codehint"
    android:textColorHint="@color/hintgrey"
    android:dropDownWidth="fill_parent"
    android:paddingRight="30dp"
    android:paddingLeft="10dp"
    android:singleLine="true"
    android:ellipsize="end"
/>
4个回答

60
您需要将您的autoCompleteViewcompletionThreshold属性设置为1。
<AutoCompleteTextView 
    android:id="@+id/someID" 
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:completionThreshold="1" />

或者动态地通过代码执行它,使用

mAutoCompleteTextView.setThreshold(1)

开心编程 :)


@nobalG 我遇到了这样的问题 http://pastie.org/10678820# ,问题是如果我输入ap,那么那些列表项中有ap的不会出现和显示,我想要显示那些以ap单词或任何输入的单词开头的项目。 - Amitsharma
@amitsharma 你能详细解释一下吗? - nobalG
@nobalG,请查看编辑后的内容。如果我输入“ap”,那些以“ap”开头的列表项应该显示在列表中,这是问题所在。 - Amitsharma
@amitsharma请在stackoverflow上展示一些代码或者提出问题,并将问题的链接发送给我,这样我就可以看到它了。 - nobalG
@amitsharma 你正在输入的组件是一个editText吗?对吗? - nobalG
显示剩余2条评论

2
使用Java代码
autoComplete.setThreshold(1);

或者在XML中
android:completionThreshold="1"

0
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.MultiAutoCompleteTextView;
import android.widget.Toast;

public class MainActivity extends Activity {

     private AutoCompleteTextView autoComplete;
     private MultiAutoCompleteTextView multiAutoComplete;
     private ArrayAdapter<String> adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // get the defined string-array 
        String[] colors = getResources().getStringArray(R.array.colorList);

        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,colors);

        autoComplete = (AutoCompleteTextView) findViewById(R.id.autoComplete);
        multiAutoComplete = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoComplete);

        // set adapter for the auto complete fields
        autoComplete.setAdapter(adapter);
        multiAutoComplete.setAdapter(adapter);

        // specify the minimum type of characters before drop-down list is shown
        autoComplete.setThreshold(1);
        multiAutoComplete.setThreshold(2);
        // comma to separate the different colors
        multiAutoComplete.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());

        // when the user clicks an item of the drop-down list
        multiAutoComplete.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                 Toast.makeText(getBaseContext(), "MultiAutoComplete: " +
                            "you add color "+arg0.getItemAtPosition(arg2),
                            Toast.LENGTH_LONG).show();
            }
        });
    }

}

我正在获取这个 pastie.org/10678820# ,问题是如果我输入“ap”,则那些列表项中带有“ap”的项目不会出现和显示,我想展示那些以“ap”或任何输入的单词开头的项目。 - Amitsharma

0

如果您想在点击 MaterialAutoCompleteTextView 后打开对话框

您必须将completionThreshold 值设置为 0 并将 inputType 值设置为 none

您还可以增加相同字段的最小字符数。

不要忘记设置 inputTypetextnumber

 <com.google.android.material.textfield.MaterialAutoCompleteTextView
                android:layout_width="match_parent"
                android:layout_height="45dp"
                android:completionThreshold="0" <-- This line
                android:ems="10"
                android:inputType="none" />

我希望能够帮助你


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接