Подтвердить что ты не робот

Список предложений AutocompleteTextView увеличивается

возможные дубликаты Android: autocompletetextview, список предложений отображается над текстом?

Я полностью пытаюсь отображать список предложений, перекрывающийся на клавиатуре, когда свиток списка предложений просматривается пользователем, но он всегда открывается стороной.

здесь я получаю этот путь

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>

что делать в этом коде, чтобы отобразить предложение по клавиатуре, когда список был фокусом.

4b9b3361

Ответ 1

У меня была эта проблема раньше. Для меня было больше пространства экрана над AutocompleteTextView, чем ниже (тестирование на "обычном" устройстве), поэтому список открывается вверх. Я немного изменил свой макет, чтобы было меньше места AutocompleteTextView, и он начал открываться вниз. Это то, что исправило это для меня.

Ответ 2

Вы можете отрегулировать макет так, чтобы было больше места ниже AutoCompleteTextView

или

вы можете изменить высоту выпадающего меню android:dropDownHeight и установить некоторое значение, это будет работать, когда его внутри a scrollView и AutoCompleteTextView находятся в верхней части.

Чтобы отобразить список опций в фокусе, сделайте что-то вроде этого

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

Это отобразит список опций, когда пользователь сосредоточится на AutoCompleteTextView

Ответ 3

Хитрость заключается в том, чтобы желаемая высота раскрытия никогда не превышала доступное пространство ниже. Мой подход заключается в создании подкласса, который переопределяет 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="100dp" в тег AutoCompleteTextView в файле макета! он просто будет контролировать высоту выпадающего меню и позволит нам прокручивать!

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

Ответ 5

Здесь мое решение

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.

Ответ 6

Установить полный макет, содержащий Autocompletetextview внутри Scrollview

Это решит вашу проблему!