最近我决定从我的自定义SearchBox切换到Android v7支持库提供的SearchView。
然而,我使用自定义按钮提供额外的过滤选项(通过PopupMenu),因为为我的应用程序提供数据的API可以选择向搜索查询添加更多参数。 我使用过滤器按钮对定制的SearchBox进行了充气,整个过程正常,只缺少真正的材料设计。
如果我错了,请纠正我,但我认为没有按钮或菜单可以提供额外的过滤选项。
我在Google上搜索了如何向SearchView添加一个按钮,而我发现的东西对我来说并没有这么做。
所以我的问题是,如何在不违反指南的情况下添加额外的过滤选项(最好使用自定义按钮或至少是设置OnClick侦听器的选项)?
我尝试使用标识符android:id / submit_area从SearchView获取LinearLayout,使用
int parentLayoutId = searchView.getContext().getResources().getIdentifier("android:id/submit_area", null, null);
LinearLayout parent = (LinearLayout) searchView.findViewById(parentLayoutId);
但是没有找到该ID。 调试应用程序时,我可以看到名为submit_area的LinearLayout的ID(它与parentLayoutId不同,但我不想将id硬编码到应用程序中。
我做错了还是根本不可能?
注意:我已经看到YouTube应用在您搜索后如何为您提供过滤选项但由于我每个月都有有限数量的API请求,因此这不是很理想。
希望尽快找到答案。
感谢您的建议和帮助!
蒂姆·科尔斯答案 0 :(得分:0)
我还没有像您尝试的那样使用自定义搜索功能。
但总的来说,如果你想减少API请求的数量,那么你最好的选择可能就是在预搜索时给出过滤器。 (含义:事先询问过滤器,然后在输入时将其应用于查询/请求)
在您描述的方案中,我的建议是创建一个自定义操作视图,用户可以在其中输入“过滤器”#39;在他们输入搜索请求之前' (我还没有试过这个,但那将是我现在看来的方向)
在'应用栏中制作布局'类似于以下ascii艺术......
| [SEARCH_??_________] | [Add Filter #] | [...] |
我可能会改变#'#'到他们有效的过滤器数量(如果您决定允许多个过滤器)(作为他们过滤的视觉提示)
https://developer.android.com/training/appbar/action-views.html