android 搜索:自定义建议布局
Posted
技术标签:
【中文标题】android 搜索:自定义建议布局【英文标题】:android search: customize suggestion layout 【发布时间】:2016-04-20 13:21:44 【问题描述】:我一直在遵循 here 的 SearchView 和对话框实现的指示。两者都在下面可见。有很多关于 SO 的问题都集中在自定义搜索框上,但很少有关于自定义建议 UI 的问题。 (那些是关于颜色/字体的,默认值对我来说很好。)我希望能够扩大建议以占据整个屏幕的宽度。有没有办法使用对话框或 SearchView 实现来自定义宽度。除非这是唯一的选择,否则我宁愿不使用库。如果这是可能的或更容易的实现之一,那很好。
对我来说,对话框实现如下所示:
对于我来说,SearchView 实现如下所示:
【问题讨论】:
***.com/questions/27671954/….. 这可能会有所帮助 @lf215 你可以制作一个自定义的istview .... 【参考方案1】:Here 是从谷歌地址搜索中选择地点的存储库。它具有全屏搜索列表的实现。
自定义搜索视图
【讨论】:
【参考方案2】:您可以这样做:
步骤 1
只需使用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());
-
在您的
searchEditText
上添加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)
);
这里suggestList
是提供给您的列表的数据
【讨论】:
【参考方案3】:您应该为搜索结果创建一个活动并编写一个布局 xml 文件,其中 listview 或 recyclerview 使用 match_parent 值填充宽度。 内容必须是适配器中的搜索结果。
【讨论】:
以上是关于android 搜索:自定义建议布局的主要内容,如果未能解决你的问题,请参考以下文章