Android - 自定义SearchView建议分隔符

时间:2015-03-29 20:14:02

标签: android autocompletetextview searchview divider theming

我正在尝试在SearchView中自定义ActionBar。剩下的最后一件事是设置建议下拉分隔符颜色。在早期我发现,由于一些不可想象的原因,一个不仅仅是样式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有我真正想要使用的setDividersetDividerHeight方法。但ListPopupWindow是在运行时创建的,只在需要时显示,而且它是私有成员,所以我不知道如何访问它。

再一次,简化的结构是ActionBar > SearchView > AutoCompleteTextView > ListPopupWindow > ListView。我找到了所有箭头的方法但只有一个(AutoCompleteTextView> ListPopupWindow)。

其他替代方法是使用XML来设置样式,但正如我之前提到的,样式ActionBar尤其是SearchView非常麻烦,我真的不知道如何通过阅读源代码来实现它代码。

我发现使用Google的唯一方法是在主题中设置所有下拉分隔符(例如this),但它不适用于SearchView下拉列表,我不知道为什么。

任何能帮助我的人至少有一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,所以我终于发现将整个主题从Holo.Light.DarkActionBar更改为Holo.Light要简单得多,因为分隔符的颜色已经在那里好了,我只需要将ActionBar设置为黑暗版本,但这很容易,花了大约20分钟:))