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 搜索:自定义建议布局的主要内容,如果未能解决你的问题,请参考以下文章

具有特定形状的 Android 自定义视图

是否可以在使用内置字典的android中创建自定义键盘[关闭]

如何自定义显示分层模型中的详细信息的搜索建议UI

如何在 ActionBar 中显示自定义视图?

自定义流式布局

添加自定义android webview错误页面