更改Android中突出显示文本的颜色
我不确定这是可能的,也许有人可以直接设置我。在具有蓝色背景上的白色文本的Android应用程序中,我有一个EditText视图。当选择文本时(通过长按和编辑对话框),我希望突出显示为白色,并将文本颜色更改为黑色。令人讨厌的是,尽管似乎没有办法设置突出显示文本的颜色。您可以使用textColorHighlight来设置突出显示颜色,但不能设置文本颜色,因此使用白色文本设置白色突出显示为白色大块。更改Android中突出显示文本的颜色
它看起来应该是一些微不足道的东西,你可以在xml中声明,但尽管我已经尝试过很多样式和颜色的组合,但我一直无法改变颜色。
检查其他标准应用程序似乎文字颜色似乎永远不会改变,所以我认为这是不容易做到的事情。如果可能的话,我宁愿不需要继承EditText的子类就可以实现这么简单。我错过了什么吗?这可以在视图xml中完成吗?
正如this SO后称,你应该使用一个选择来改变文字颜色,像这样:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Pressed State -->
<item android:state_pressed="true"
android:color="#FFFFFF" />
<!-- Focused State -->
<item android:state_focused="true"
android:color="#FFFFFF" />
<!-- Default State -->
<item android:color="#000000" />
</selector>
然后你文字颜色属性设置为@绘制/ selector_name
使用textColorHighlight尝试 - “突出显示文本的颜色。” http://developer.android.com/reference/android/R.attr.html#textColorHighlight
这改变了高光的颜色,而不是实际的文字颜色。 – k3v 2014-08-11 16:36:52
Object mSelectionForegroundColorSpan;
@Override
protected void onSelectionChanged(int selStart, int selEnd) {
super.onSelectionChanged(selStart, selEnd);
if(mSelectionForegroundColorSpan == null){
mSelectionForegroundColorSpan = new ForegroundColorSpan(Color.GREEN);
}else{
getText().removeSpan(mSelectionForegroundColorSpan);
}
if(selStart > selEnd){
int swap = selStart;
selStart = selEnd;
selEnd = swap;
}
getText().setSpan(mSelectionForegroundColorSpan, selStart, selEnd, Spanned.SPAN_INTERMEDIATE);
}
覆盖的TextView的onSelectionChanged方法,获取文本并设置ForegroundColorSpan
尝试:<item name="android:textColorHighlight">your_color</item>
的风格,你为你的主题。 例如
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="colorPrimary">your_color1</item>
<item name="colorPrimaryDark">your_color2</item>
<item name="colorAccent">your_color3</item>
<item name="android:textColor">your_color4/item>
<item name="android:textColorHighlight">your_color</item>
</style>
然后在清单文件中使用此风格作为您的活动主题。对于EG-
<activity
android:name=".youractivity"
android:label=""
android:theme="@style/AppTheme.NoActionBar"
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
我已经尝试了所有的 和样式 风格= “其中所有的上述被指定为物品@风格/ myDisplayAppearance” 。可悲的是,没有任何运气与他们。 –
sgargan
2010-08-10 21:14:35
正如我所说,你是否尝试过android:textColor =“?android:attr/textColorPrimaryInverse”? – fedj 2010-08-10 21:16:44
是的,我尝试了上面,它只是将默认的文本颜色更改为textColorPrimaryInverse,在我的情况是黑色。我真的想把它设为默认,黑色只在高亮显示。 什么时候应用反色? 感谢您的帮助btw。 – sgargan 2010-08-10 21:47:55