我一直在关注SearchView和对话框实现的路线here。两者都在下面可见。关于自定义搜索框的SO有很多问题,但很少有关于自定义建议UI的问题。 (那些是关于颜色/字体,默认情况下对我来说很好。)我希望能够扩大建议占据屏幕的整个宽度。有没有办法使用对话框或SearchView实现自定义宽度。除非这是唯一的选择,否则我不想使用图书馆。如果这是可能的或更容易实现其中一个实现。
答案 0 :(得分:4)
答案 1 :(得分:3)
只需使用RecyclerView
或可扩展列表或列表创建一个布局,无论您要使用哪个。
在您的活动(CityActivity
)中,您需要执行此操作:
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());
}
}
}
TextChangeListener
上添加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) {
}
});
}
此处suggestList
是您的
答案 2 :(得分:0)
您应该为搜索结果创建一个活动,并使用match_parent值编写一个布局xml文件,其中listview或recyclerview填充宽度。 内容必须是适配器中的搜索结果。