56

AutocompleteTextView があり、正常に動作します。単語を書くと関連する結果が表示されますが、AutocompleteTextView に単語を書き込まずにすべての項目を表示したいです。どうやってやるの。

4

13 に答える 13

90

AutoCompleteTextView を拡張する必要があります。

「しきい値が 0 以下の場合、しきい値 1 が適用されます。」

setThreshold

import android.content.Context;  
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.AutoCompleteTextView;

public class InstantAutoComplete extends AutoCompleteTextView {

    public InstantAutoComplete(Context context) {
        super(context);
    }

    public InstantAutoComplete(Context arg0, AttributeSet arg1) {
        super(arg0, arg1);
    }

    public InstantAutoComplete(Context arg0, AttributeSet arg1, int arg2) {
        super(arg0, arg1, arg2);
    }

    @Override
    public boolean enoughToFilter() {
        return true;
    }

    @Override
    protected void onFocusChanged(boolean focused, int direction,
            Rect previouslyFocusedRect) {
        super.onFocusChanged(focused, direction, previouslyFocusedRect);
       if (focused && getFilter()!=null) {
        performFiltering(getText(), 0);
    }
    }

}

XMLで

<AutoCompleteTextView ... /> to <your.namespace.InstantAutoComplete ... />

編集1

InstantAutoComplete という名前の新しいクラスを作成し、このコードをクラスに入れます。

レイアウトxmlでは、このクラスを次のように使用します

次に、アクティビティでこのウィジェットを見つけます (onCreate メソッド)。

この例を見てください

于 2013-03-21T10:35:02.890 に答える
55

より良い解決策はこちら

をカスタマイズする必要はありませんAutoCompleteTextView。代わりにautoCompleteTextView.showDropDown()、必要なときにいつでも電話してください.....乾杯:)

于 2014-02-06T11:38:29.390 に答える
32

わたしにはできる:

オブジェクトの次のイベント メソッドに追加します。

    myView.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus)
                myView.showDropDown();

        }
    });

    myView.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            myView.showDropDown();
            return false;
        }
    });
于 2014-03-11T18:14:07.990 に答える
9

キーボードを表示するには呼び出す必要がありますrequestFocus();。そうしないと、キーボードがポップアップしません。

このメソッドは強制的にドロップダウン リストを表示します。

autocomptv.setOnTouchListener(new OnTouchListener() {

        @SuppressLint("ClickableViewAccessibility")
        @Override
        public boolean onTouch(View paramView, MotionEvent paramMotionEvent) {
            // TODO Auto-generated method stub
            autocomptv.showDropDown();
            autocomptv.requestFocus();
            return false;
        }
    });
于 2014-09-25T10:59:54.890 に答える
4

これを使って :

 text.setOnTouchListener(new View.OnTouchListener(){


            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                // TODO Auto-generated method stub
                text.showDropDown();
                return false;
            }
            });
于 2016-10-12T06:23:46.600 に答える