如何自定义展开的搜索操作项的插入符号的颜色



背景

我对我的小应用程序做了一些调整,这样它就能更好地遵循材料设计指南。

问题

我有一个搜索操作项,操作栏是蓝色的,但当单击搜索操作项时,我几乎看不到插入符号(输入文本的位置)。

我想把它改成白色(就像文本的颜色一样)。

我尝试过的

我试着查看支持库的代码,搜索一个允许我自定义插入符号颜色的函数,但我找不到有效的解决方案。

我尝试使用"searchViewStyle"作为主题的项目之一,并创建了一个新的样式:

<style name="AppTheme.SearchViewStyle" parent="Widget.AppCompat.SearchView">
...

但我所发现的似乎都不适合这个。

奇怪的是,当使用">Theme.AppCompat.Light"而不是">Theme.AppCompat.LightDarkActionBar"时,插入符号的颜色已经变了(变为绿色)。

问题

如何更改搜索操作项(又名SearchView)的文本插入符号的颜色?


EDIT:我发现可以为工具栏设置"colorControlActivated",例如:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarTheme">@style/AppTheme.ActionBarTheme</item>
.... 
<style name="AppTheme.ActionBarTheme" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="colorControlActivated">#FFffffff</item>
</style>

似乎有效,但它会影响其他东西吗,除了搜索项的插入符号?如果是,哪些?是否可以只影响插入符号?

根据官方设计指南,插入符号应使用android:colorControlActivated(colorControlActivatedsupport-v7)中的引用着色(API>21)。正如你所发现的,它是自动着色的。

默认情况下,colorControlActivated在几个小部件中使用。顾名思义,它的颜色为:

  • 一个激活的复选框
  • 重点编辑文本
  • 选定的单选按钮

等等。我记不起它使用的所有地方,但如果你设法将它仅应用于工具栏,那么除了你放在Menu中的小部件(例如SearchView)之外,它不应该有任何其他应用程序。它可能(不确定)会对上下文动作条产生一些影响。

如果你想完全控制插入符号,你也可以提供自己的可绘制:

<item name="android:textCursorDrawable">@drawable/my_drawable</item>

这适用于API>12。

相关内容

  • 没有找到相关文章

最新更新