Vraag Android-zoekopdracht: pas de lay-out van de suggestie aan


Ik heb de aanwijzingen gevolgd hier voor zowel SearchView als dialoogimplementaties. Beide zijn hieronder zichtbaar. Er zijn veel vragen over SO die zich richten op het aanpassen van het zoekvak, maar slechts enkele die betrekking hebben op het aanpassen van de gebruikersinterface van de suggesties. (Degenen die dat wel doen, gaan over kleur / lettertype, de standaardinstellingen zijn prima voor mij.) Ik zou graag de suggesties willen verruimen om de hele breedte van het scherm op te nemen. Is er een manier om de breedte aan te passen met behulp van dialoog- of SearchView-implementaties. Ik gebruik liever geen bibliotheek, tenzij dat de enige optie is. Als dit mogelijk of gemakkelijker is met een van de implementaties, is dat prima.

Hier is hoe de dialoogimplementatie eruit ziet voor mij: enter image description here

Dit is hoe de SearchView-implementatie er voor mij uitziet: enter image description here


17
2018-01-15 01:10


oorsprong


antwoorden:


Dit is hoe je het kunt doen: Screenshot of result

Stap 1

Maak gewoon een lay-out met een RecyclerView of een uitvouwbare lijst of lijst, welke u ook wilt gebruiken.

Stap 2

In jou activiteit (CityActivity) je moet dit doen:

  1. Maak een handler zoals deze:
private static class SearchHandler extends Handler {
    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());
        }
    }
}
  1. zet een TextChangeListener op je searchEditText:
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) {
        }
    });
}

Hier suggestList zijn de gegevens die aan uw lijst met zijn gegeven


3
2018-01-22 05:40



Hier  is de de repository die de plaats kiest uit het zoeken naar google-adressen. Het heeft de implementatie van een zoeklijst op volledig scherm.

Aangepaste zoekfunctie

customized searchview


4
2018-01-21 13:31



U moet een activiteit maken voor de zoekresultaten en een XML-lay-outbestand schrijven waarin de breedte van de lijst of de opvraag wordt ingevuld met de waarde match_parent. Inhoud moet zoekresultaten in adapter zijn.


0
2018-01-23 20:58