Поиск по андроиду: настройка макета предложения

Я следил за инструкциями здесь как для реализации SearchView, так и для диалогов. Оба они видны ниже. На SO есть много вопросов, которые сосредоточены на настройке окна поиска, но мало что касается настройки пользовательского интерфейса предложений. (Те, которые относятся к цвету/шрифту, по умолчанию для меня это хорошо). Я хотел бы иметь возможность расширить предложения, чтобы охватить всю ширину экрана. Есть ли способ настроить ширину, используя либо диалог, либо реализацию SearchView. Я бы предпочел не использовать библиотеку, если это единственный вариант. Если это возможно или проще с одной из реализаций, это нормально.

Вот что выглядит для меня реализация диалога: введите описание изображения здесь

Вот что выглядит для меня реализация SearchView: введите описание изображения здесь

Ответы

Ответ 1

Вот как вы можете это сделать: это то, что я создал Шаг 1:

Просто создайте макет с просмотром или расширенным списком повторного использования или списком в зависимости от того, что вы хотите использовать.

Шаг 2. В вашей деятельности (CityActivity) вам нужно сделать следующее:

  • Создайте обработчик следующим образом:

закрытый статический класс SearchHandler расширяет обработчик {

private WeakReference<CityActivity> mTarget;

SearchHandler(CityActivity target) {
    mTarget = new WeakReference<>(target);
}

public void setTarget(CityActivity target) {
    mTarget.clear();
    mTarget = new WeakReference<>(target);

}

@Override
public void handleMessage(final Message msg) {
    if (msg.what == CityActivity.TRIGGER_SEARCH) {
        CityActivity activity = mTarget.get();
        activity.makeRequest(mSearchText.trim());
    }
}

} 2. Поместите textchangelistener на свой искомый текст

public void setTextChangeListener() {
    searchView.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            mSearchText = searchView.getText().toString();
            if (!mSearchText.trim().isEmpty()) {
                handler.removeMessages(CitySelectionActivity.TRIGGER_SEARCH);
                handler.sendEmptyMessageDelayed(CityActivity.TRIGGER_SEARCH,
                        CityActivity.SEARCH_TRIGGER_DELAY_IN_MS);
            } else {
                suggestList.clear();
                fillAnything();
            }
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });
}

Здесь предлагаемый список - это данные, которые предоставляются вашему списку

Ответ 2

Здесь это репозиторий, который выбирает место из поиска адресов google. Он реализует список полноэкранного поиска.

Индивидуальная поисковая система

customized searchview

Ответ 3

Вы должны создать действие для результатов поиска и написать файл xml-макета, где listview или recyclerview заполнять ширину, используя значение match_parent. Контент должен быть результатом поиска в адаптере.