Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-自定义搜索视图_Android_Autocompletetextview_Searchview_Divider_Theming - Fatal编程技术网

Android-自定义搜索视图

Android-自定义搜索视图,android,autocompletetextview,searchview,divider,theming,Android,Autocompletetextview,Searchview,Divider,Theming,我正在尝试在ActionBar中自定义SearchView。剩下的最后一件事是设置建议下拉分隔符颜色。我很早就发现,出于一些难以想象的原因,人们并不是简单地为SearchView设置样式,大多数内容都只能在运行时设置样式,你必须搜索许多不同的方法才能获得你想要的外观 我使用AppCompat版本,但是我认为过程非常相似。首先,我检索我的SearchView: 我在源代码中发现,下拉列表隐藏在AutoCompleteTextView的一些内部扩展中,但是,仍然可以通过其ID进行访问,如下所示: A

我正在尝试在ActionBar中自定义SearchView。剩下的最后一件事是设置建议下拉分隔符颜色。我很早就发现,出于一些难以想象的原因,人们并不是简单地为SearchView设置样式,大多数内容都只能在运行时设置样式,你必须搜索许多不同的方法才能获得你想要的外观

我使用AppCompat版本,但是我认为过程非常相似。首先,我检索我的SearchView:

我在源代码中发现,下拉列表隐藏在AutoCompleteTextView的一些内部扩展中,但是,仍然可以通过其ID进行访问,如下所示:

AutoCompleteTextView actv = (AutoCompleteTextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
现在,下一个任务是在AutoCompleteTextView中设置分隔符的样式。问题是AutoCompleteTextView本身是一个TextView,其中包含ListPopupWindow,请参阅的源代码中的mPopup变量,它最终具有所需的getListView方法,ListView具有我真正想要使用的setDivider和setDividerHeight方法。但是ListPopupWindow是在运行时创建的,只在需要时显示,而且它是一个私有成员,所以我不知道如何访问它

同样,简化的结构是ActionBar>SearchView>AutoCompleteTextView>ListPopupWindow>ListView。除了一个AutoCompleteTextView>ListPopupWindow之外,我已经找到了绕过所有箭头的方法

另一种选择是使用XML对其进行样式化,但正如我前面提到的,对ActionBar,尤其是SearchView进行样式化非常麻烦,我不知道如何通过阅读源代码来完成

我在谷歌上发现的唯一一件事就是在主题中设置了所有的下拉分隔符,例如like,但它不适用于SearchView下拉列表,我也不知道为什么

谁能至少帮我一点忙


谢谢

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

嗨,我的问题是建议列表的背景很暗,根本没有分隔符。我可以改变背景颜色,但没有解决办法分割。我尝试了你的解决方案,但运气不好。嗨,我也没有解决它,我只是使用了Holo.Light主题,其中的建议列表还可以。还要注意,这是使用Appcompat v7/API 19。我的最后一个建议是不要太依赖支持API库,因为它太糟糕了。如果您想解决这个问题,我发现分隔符实际上是某个内部组件的私有成员,因此您可以实际跟踪它,然后通过反射更改其可见性。是的,我看见有人这样做。你真的不想这么做:D
AutoCompleteTextView actv = (AutoCompleteTextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);