如何自定义expanded-search-action-item的插入符号的颜色?

时间:2015-05-10 20:36:41

标签: android android-actionbar android-support-library searchview caret

背景

我对我的小应用做了一些调整,以便更好地遵循材料设计指南。

问题

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

我想改变它,也许是白色(比如文字颜色)。

我尝试了什么

我已经尝试查看支持库的代码,搜索允许我自定义插入颜色的功能,但我找不到可行的解决方案。

我试图使用" searchViewStyle"作为主题的项目之一,并创造一种新的风格:

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

但我所发现的一切似乎都不适合这一点。

奇怪的是,当使用&#34; Theme.AppCompat.Light &#34;而不是&#34; Theme.AppCompat.Light.DarkActionBar &#34; ,插入符号的颜色已经改变(变为绿色)。

问题

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

编辑:我发现可以设置&#34; colorControlActivated&#34;对于工具栏,如:

<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>

似乎可以工作,但除了搜索项目的插入符号外,它是否会影响其他内容?如果是这样,哪些?是否有可能只影响插入符?

1 个答案:

答案 0 :(得分:1)

根据官方设计指南,插入符号(API&gt; 21)应在android:colorControlActivatedcolorControlActivatedsupport-v7)中引用。正如您所发现它会自动着色。

默认情况下,在几个小部件中使用

colorControlActivated。顾名思义,它将是:

的颜色
  • 激活的CheckBox;
  • 一个专注的EditText;
  • 选择了RadioButtons;

等等。我无法回想起它所使用的所有地方,但是如果你设法只将它应用到工具栏上,它应该没有任何其他应用程序,而不是你放在Menu中的小部件(例如SearchView) 。它可以(不确定)对上下文操作栏产生一些影响。

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

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

这适用于API&gt; 12.