【问题标题】:android search: customize suggestion layoutandroid 搜索:自定义建议布局
【发布时间】:2016-04-20 13:21:44
【问题描述】:

我一直在遵循 here 的 SearchView 和对话框实现的指示。两者都在下面可见。有很多关于 SO 的问题都集中在自定义搜索框上,但很少有关于自定义建议 UI 的问题。 (那些是关于颜色/字体的,默认值对我来说很好。)我希望能够扩大建议以占据整个屏幕的宽度。有没有办法使用对话框或 SearchView 实现来自定义宽度。除非这是唯一的选择,否则我宁愿不使用库。如果这是可能的或更容易的实现之一,那很好。

对我来说,对话框实现如下所示:

对于我来说,SearchView 实现如下所示:

【问题讨论】:

标签: android android-layout search search-suggestion


【解决方案1】:

Here 是从谷歌地址搜索中选择地点的存储库。它具有全屏搜索列表的实现。

自定义搜索视图

【讨论】:

    【解决方案2】:

    您可以这样做:

    步骤 1

    只需使用RecyclerView 或可扩展列表或您想使用的列表创建一个布局。

    第二步

    在你的活动中(CityActivity)你需要这样做:

    1. 像这样创建一个处理程序:
    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. 在您的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 值填充宽度。 内容必须是适配器中的搜索结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多