24

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

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

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

ここに画像の説明を入力してください

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

<?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>

リストがフォーカスされたときにキーボード上に提案を表示するためにこのコードで何をすべきか。

4

8 に答える 8

12

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

于 2012-08-13T10:55:34.983 に答える
7

レイアウトを調整して、下のスペースを増やすことができます。AutoCompleteTextView

また

ドロップダウンの高さを変更してandroid:dropDownHeight高い値を設定できます。これは、aの内側scrollViewAutoCompleteTextViewが上部に近い場合に機能します。

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

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

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

于 2012-08-16T04:45:07.553 に答える
7

秘訣は、必要なドロップダウンの高さが下の使用可能なスペースよりも大きくならないようにすることです。私のアプローチは、以下をオーバーライドするサブクラスを作成することです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します。下にスペースがないか、ほとんどない場合は、問題を強制しない方がよいでしょう。

編集

コメントで述べたように、に負の数を渡すとsetDropDownHeight、一部のAndroidバージョンで例外がトリガーされます。MINIMAL_HEIGHTゼロより大きい値を定義する限り、それは問題にはなりません。

于 2018-01-16T08:43:21.597 に答える
1

これが私の解決策です

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の上に表示されます。

于 2017-05-22T06:46:21.630 に答える
1

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

于 2019-08-09T12:31:11.820 に答える
0

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

<AutoCompleteTextView
        android:id="@+id/acetxt_assignclient"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"   
        android:dropDownHeight="100dp">
</AutoCompleteTextView>
于 2013-11-19T11:42:25.970 に答える
0

ネストされたスクロールビューを使用している場合は、通常のスクロールビューを使用している場合と同じように、上または下のビューを開く傾向があります。

于 2021-01-14T06:03:29.847 に答える
-2

Scrollview内にAutocompletetextviewを含むフルレイアウトを設定する

これはあなたの問題を解決します!

于 2013-02-20T06:14:14.683 に答える