Почему раскрывающийся список для моего AutoCompleteTextView скрывается клавиатурой только для определенной ширины списка? - PullRequest
1 голос
/ 24 января 2020

Мое приложение использует AutoCompleteTextView для отображения данных из списка в процессе поиска, например:

enter image description here

Я хочу, чтобы поле поиска быть видимым, поэтому я добавил следующее к своему фрагменту:

activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

и, конечно же, он работает, как и ожидалось, когда я касаюсь текстового поля поиска:

enter image description here

Однако, когда я начинаю вводить символы в текстовое поле, раскрывающийся список закрывается клавиатурой, ЕСЛИ Я не установил dropDownWidth равным 101 дп или менее:

enter image description here

Например, когда я устанавливаю значение 102 dp или match_parent, я получаю следующее:

enter image description here

Я могу прокрутить список, но он остается неясным.

Я искал проблему с переполнением стека, но ничего не вышло. Кстати, я работаю на Pixel 2 с Android 10 и, что интересно, проблема не возникает на эмулированном Huawei 8, работающем API 26.

Ответы [ 3 ]

0 голосов
/ 07 февраля 2020

Я отправил проблему в Google как на ошибку и жду ответа.

0 голосов
/ 23 февраля 2020

Тем временем я обошел проблему, переместив мой AutoCompleteTextView выше списка:

enter image description here

Теперь список отображается просто отлично:

enter image description here

Я думаю, что проблема была в том, что AutoCompleteTextView находился внизу страницы.

0 голосов
/ 06 февраля 2020

Я столкнулся с этой проблемой некоторое время go. Ниже приведен пример (код java - потому что это было некоторое время go). Я использовал DelayAutoCompleteTextView, и я создал собственный адаптер

private void setAutocompleteForPatientName (пациенты ArrayList) {contactName = (поиск DelayAutoCompleteTextI (View) R.id.nameET); contactName.setThreshold (1); contactName.setAdapter (новый YourCustomAdapter (это, контакты)); contactName.setLoadingIndicator ((android .widget.ProgressBar) findViewById (R.id.pb_loading_indicator)); contactName.setOnItemClickListener (new AdapterView.OnItemClickListener () {@Override publi c void onItemClick (AdapterView adapterView, представление view, int i, long l) {

            DO WHATEVER YOU WANT WITH SELECTION

        }
    });
}

В моем адаптере реализована возможность фильтрации.

Сильфон - это DelayAutocomplete

publi c Класс DelayAutoCompleteTextView расширяет AutoCompleteTextView {

private static final int MESSAGE_TEXT_CHANGED = 100;
private static final int DEFAULT_AUTOCOMPLETE_DELAY = 750;

private int mAutoCompleteDelay = DEFAULT_AUTOCOMPLETE_DELAY;
private ProgressBar mLoadingIndicator;

private final Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        DelayAutoCompleteTextView.super.performFiltering((CharSequence) msg.obj, msg.arg1);
    }
};

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

public void setLoadingIndicator(ProgressBar progressBar) {
    mLoadingIndicator = progressBar;
}

public void setAutoCompleteDelay(int autoCompleteDelay) {
    mAutoCompleteDelay = autoCompleteDelay;
}

@Override
protected void performFiltering(CharSequence text, int keyCode) {
    if (mLoadingIndicator != null) {
        mLoadingIndicator.setVisibility(View.VISIBLE);
    }
    mHandler.removeMessages(MESSAGE_TEXT_CHANGED);
    mHandler.sendMessageDelayed(mHandler.obtainMessage(MESSAGE_TEXT_CHANGED, text), mAutoCompleteDelay);
}

@Override
public void onFilterComplete(int count) {
    if (mLoadingIndicator != null) {
        mLoadingIndicator.setVisibility(View.GONE);
    }
    super.onFilterComplete(count);
}

}

, а вот xml

                <YOURPACKAGE THAT CONTAINS YOUR CUSTOM VIEW CLASS .DelayAutoCompleteTextView
                    android:id="@+id/nameET"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@android:color/transparent"
                    android:hint="@string/patientName"
                    android:imeOptions="flagNoExtractUi|actionSearch"
                    android:inputType="textCapSentences"
                    android:paddingRight="20dp"
                    android:textSize="12sp" />

                <ProgressBar
                    android:id="@+id/pb_loading_indicator"

                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical|right"
                    android:layout_marginRight="20dp"
                    android:visibility="gone" />
            </FrameLayout>
...