背景
我对我的小应用程序做了一些调整,这样它就能更好地遵循材料设计指南。
问题
我有一个搜索操作项,操作栏是蓝色的,但当单击搜索操作项时,我几乎看不到插入符号(输入文本的位置)。
我想把它改成白色(就像文本的颜色一样)。
我尝试过的
我试着查看支持库的代码,搜索一个允许我自定义插入符号颜色的函数,但我找不到有效的解决方案。
我尝试使用"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
(colorControlActivated
至support-v7
)中的引用着色(API>21)。正如你所发现的,它是自动着色的。
默认情况下,colorControlActivated
在几个小部件中使用。顾名思义,它的颜色为:
- 一个激活的复选框
- 重点编辑文本
- 选定的单选按钮
等等。我记不起它使用的所有地方,但如果你设法将它仅应用于工具栏,那么除了你放在Menu
中的小部件(例如SearchView)之外,它不应该有任何其他应用程序。它可能(不确定)会对上下文动作条产生一些影响。
如果你想完全控制插入符号,你也可以提供自己的可绘制:
<item name="android:textCursorDrawable">@drawable/my_drawable</item>
这适用于API>12。