web-dev-qa-db-ja.com

AutocompleteTextView提案リストが上がる

重複の可能性 Android:autocompletetextview、提案リストがtextviewの上に表示されますか?

ユーザーが提案リストをスクロールすると、キーボードに重複する提案リストを完全に表示しようとしていますが、常に開いています。

ここで私はこのようになっています

enter image description here

これが私のマニフェストファイルです

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.sl"
    Android:versionCode="1"
    Android:versionName="1.0" >

    <uses-sdk Android:minSdkVersion="8" />

    <application
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name" >
        <activity
            Android:label="@string/app_name"
            Android:name=".SuggestionListActivity" 
            Android:windowSoftInputMode="adjustResize|adjustPan|stateHidden">
            <intent-filter >
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

これが私のmain.xmlファイルです

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical" Android:padding="10dp">

    <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="@string/hello" 
        Android:layout_margin="10dp"/>

    <TextView Android:layout_margin="10dp"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="This is testing for the auto complete textview in this application to display suggestion list overlapping on keyboard." />

    <AutoCompleteTextView Android:id="@+id/autocomplete"
            Android:layout_width="fill_parent" Android:layout_margin="5dp"
            Android:layout_height="wrap_content" Android:hint="Search"
            Android:layout_marginLeft="5dp" Android:dropDownHeight="300dp"
            Android:inputType="textAutoComplete" Android:singleLine="true"
            />

</LinearLayout>

リストにフォーカスがあったときにキーボード上に提案を表示するには、このコードで何をするか。

19
Pratik

私は以前にこの問題を抱えていました。私の場合、AutocompleteTextViewの上には下よりも多くの画面スペースがあったので(「通常の」デバイスでテスト)、リストは上向きに開きました。 AutocompleteTextViewの下のスペースが増えるようにレイアウトを少し調整し、下向きに開き始めました。それが私にとってそれを修正したものです。

10
Mike T

AutoCompleteTextViewの下により多くのスペースがあるようにレイアウトを調整することができます

または

ドロップダウンの高さを変更できますAndroid:dropDownHeightそして高い値を設定します。これは、scrollViewの内部にあり、AutoCompleteTextViewが上部にある場合に機能します。

フォーカスのあるオプションのリストを表示するには、次のようにします

autoCompleteTextView.setOnFocusChangeListener(new OnFocusChangeListener() {
    public void onFocusChange(View v, boolean hasFocus) {
        if(hasFocus) {
            autoCompleteTextView.showDropDown();
        }
    }
});

これにより、ユーザーがAutoCompleteTextViewにフォーカスしたときに、オプションのリストが表示されます。

6
Gautam

秘訣は、必要なドロップダウンの高さが下の使用可能なスペースよりも大きくならないようにすることです。私のアプローチは、showDropDownをオーバーライドするサブクラスを作成することです。

public class DownOnlyAutoCompleteTextView extends AppCompatAutoCompleteTextView {

    private final static int MINIMAL_HEIGHT = 50;

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

    public DownOnlyAutoCompleteTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public DownOnlyAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void showDropDown() {
        Rect displayFrame = new Rect();
        getWindowVisibleDisplayFrame(displayFrame);

        int[] locationOnScreen = new int[2];
        getLocationOnScreen(locationOnScreen);

        int bottom = locationOnScreen[1] + getHeight();
        int availableHeightBelow = displayFrame.bottom - bottom;
        if (availableHeightBelow >= MINIMAL_HEIGHT) {
            setDropDownHeight(availableHeightBelow);
        }

        super.showDropDown();
    }
}

次に、これをレイアウトで使用します。例:

<your.package.DownOnlyAutoCompleteTextView
    Android:id="@+id/auto_complete_text_view"
    Android:layout_margin="12dp"
    Android:hint="AutoComplete"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    tools:ignore="HardcodedText" />

調整MINIMAL_HEIGHT要件に合わせて-下にスペースがないか、ほとんどない場合は、問題を強制しない方がよいでしょう。

4

使用する: Android:dropDownHeight="wrap_content" in AutoCompleteTextView

0
Ankit Saini

レイアウトファイルのAutoCompleteTextViewタグにAndroid:dropDownHeight="100dp"を追加するだけで、私が推測する最善の解決策になります。ドロップダウンの高さを制御するだけで、スクロールできるようになります。

<AutoCompleteTextView
        Android:id="@+id/acetxt_assignclient"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"   
        Android:dropDownHeight="100dp">
</AutoCompleteTextView>
0
LOG_TAG

これが私の解決策です

private final static int DELAY_MS = 500;
autoCompletionTextView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            autoCompletionTextView.requestFocus();
            new Handler().postDelayed(() -> autoCompletionTextView.showDropDown(), DELAY_MS);
            return false;
        }
    });

キーボードが表示された後、提案リストがAutoCompletionTextViewの上に表示されます。

0
bshears