2010-08-10 139 views
9

我不确定这是可能的,也许有人可以直接设置我。在具有蓝色背景上的白色文本的Android应用程序中,我有一个EditText视图。当选择文本时(通过长按和编辑对话框),我希望突出显示为白色,并将文本颜色更改为黑色。令人讨厌的是,尽管似乎没有办法设置突出显示文本的颜色。您可以使用textColorHighlight来设置突出显示颜色,但不能设置文本颜色,因此使用白色文本设置白色突出显示为白色大块。更改Android中突出显示文本的颜色

它看起来应该是一些微不足道的东西,你可以在xml中声明,但尽管我已经尝试过很多样式和颜色的组合,但我一直无法改变颜色。

检查其他标准应用程序似乎文字颜色似乎永远不会改变,所以我认为这是不容易做到的事情。如果可能的话,我宁愿不需要继承EditText的子类就可以实现这么简单。我错过了什么吗?这可以在视图xml中完成吗?

回答

1
+0

我已经尝试了所有的 和样式 风格= “其中所有的上述被指定为物品@风格/ myDisplayAppearance” 。可悲的是,没有任何运气与他们。 – sgargan 2010-08-10 21:14:35

+0

正如我所说,你是否尝试过android:textColor =“?android:attr/textColorPrimaryInverse”? – fedj 2010-08-10 21:16:44

+0

是的,我尝试了上面,它只是将默认的文本颜色更改为textColorPrimaryInverse,在我的情况是黑色。我真的想把它设为默认,黑色只在高亮显示。 什么时候应用反色? 感谢您的帮助btw。 – sgargan 2010-08-10 21:47:55

1

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

0
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); 
} 

覆盖的TextViewonSelectionChanged方法,获取文本并设置ForegroundColorSpan

enter image description here

1

尝试:<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> 
相关问题