2010-08-10 114 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> 
相關問題