lf215
lf215

Reputation: 1009

android search: customize suggestion layout

I've been following along with the directions here for both SearchView and dialog implementations. Both are visible below. There are many questions on SO that focus on customizing the search box, but few that are about customizing the UI of the suggestions. (The ones that do are about color/font, the defaults for which are fine for me.) I would like to be able to widen the suggestions to take up the whole width of the screen. Is there any way to customize the width using either dialog or SearchView implementations. I'd prefer not to use a library unless that is the only option. If this is possible or easier with one of the implementations that is fine.

Here's what the dialog implementation looks like for me: enter image description here

Here's what the SearchView implementation looks like for me: enter image description here

Upvotes: 21

Views: 4793

Answers (3)

Damanpreet Singh
Damanpreet Singh

Reputation: 726

This is how you can do it: Screenshot of result

Step 1

Just create a layout with a RecyclerView or an expandable list or list whichever you want to use.

Step 2

In you activity (CityActivity) you need to do this:

  1. Create a handler like this:
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. put a TextChangeListener on your 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) {
        }
    });
}

Here suggestList is the data that is given to your list of

Upvotes: 3

Weverton Peron
Weverton Peron

Reputation: 97

You should create an activity for search results and write a layout xml file where listview or recyclerview fill width using match_parent value. Content must be search results in adapter.

Upvotes: 0

ravidl
ravidl

Reputation: 1095

Here is the the repository which picks the place from google address search. It has implementation of full screen search list.

Customized Searchview

customized searchview

Upvotes: 4

Related Questions