【发布时间】:2015-03-29 20:14:02
【问题描述】:
我正在尝试在ActionBar 中自定义SearchView。剩下的最后一件事是设置建议下拉分隔线颜色。我很早就发现,出于某种难以想象的原因,不能简单地设置SearchView 的样式,大多数东西只能在运行时设置样式,你必须在谷歌上搜索许多不同的黑客来获得你想要的外观。
我使用 AppCompat 版本,但我认为过程非常相似。首先我检索我的SearchView:
searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.search));
我在源代码中发现,下拉列表隐藏在 AutoCompleteTextView 的一些内部扩展中,但是仍然可以通过它的 ID 访问,如下所示:
AutoCompleteTextView actv = (AutoCompleteTextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
现在下一个任务是设置AutoCompleteTextView 内部的分隔线样式。问题是AutoCompleteTextView本身是一个TextView,里面包含了ListPopupWindow(见AutoCompleteTextView.java的源码中的mPopup变量),最终有了想要的getListView方法,而ListView有setDivider和@987654334 @ 我真的很想使用的方法。但是 ListPopupWindow 是在运行时创建的,只按需显示,而且它是私有成员,所以我不知道如何访问它。
再一次,简化的结构是ActionBar > SearchView > AutoCompleteTextView > ListPopupWindow > ListView。我找到了绕过所有箭头的方法,但只有一个 (AutoCompleteTextView > ListPopupWindow)。
另一种选择是使用 XML 设置样式,但正如我之前提到的,设置 ActionBar 尤其是 SearchView 非常麻烦,而且我不知道如何通过阅读源代码来完成。
我发现使用 Google 的唯一一件事是在主题中设置所有下拉分隔符(例如 this),但它不适用于 SearchView 下拉列表,我不知道为什么。
谁能帮我一点忙?
谢谢!
【问题讨论】:
标签: android autocompletetextview searchview divider theming