【问题标题】:Android - Customize SearchView suggestions dividerAndroid - 自定义 SearchView 建议分隔线
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 嗨,我的问题是建议列表背景很暗,根本没有分隔线。我可以更改背景颜色,但没有解决方案 divider 。我已经尝试了您的解决方案,但没有运气。
    • 你好,我也没有解决,我只是用了Holo.Light主题,建议列表还可以。另请注意,这是使用 Appcompat v7/API 19。我的最终建议是不要过多地依赖支持 API 库,因为它太糟糕了。如果你想解决这个问题,我发现分隔符实际上是某个内部组件的私有成员,因此你实际上可以跟踪它,然后通过反射改变它的可见性。是的,我看到有人这样做。你真的不想这样做:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多