1

我寫了一個應用程序,它依賴於資源中定義的顏色。有些是直接在佈局XML文件中設置的,有些是在代碼中設置的。例子:android:textColor不再適用於棉花糖

顏色定義res/values/styles.xml

<color name="orvGyro">#33B5E5</color> 

佈局:

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/dotSpace" 
    android:textAppearance="?android:attr/textAppearanceSmall" 
    android:textColor="@color/orvGyro" /> 

顏色代碼:

accStatus.setTextColor(getResources().getColor(R.color.somecolor)); 

的應用目標API 17.截至棒棒糖,這有完美地工作,顯示正確的顏色。遷移到棉花糖(Cyanogenmod 13)後,所有這些顏色顯示爲橙色。其他顏色,在Java代碼中定義,而不是在資源中,似乎正確顯示。

我已經嘗試將目標API更改爲23並添加樣式API 21 +,無濟於事。

這裏有什麼問題?這是CyanogenMod13中的錯誤,還是我做錯了什麼?

編輯:看起來這不是從資源中獲取顏色。硬編碼的顏色如下圖所示也使我的橙色的文字:

<TextView 
    android:id="@+id/textView9" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/dotSpace" 
    android:textAppearance="?android:attr/textAppearanceSmall" 
    android:textColor="#669900" /> 

編輯2:跨越Android M Developer Preview - TextView android:textColor being ignored剛剛來到。這可以解釋我正在經歷的行爲嗎?

編輯3:當我動態生成內容而不是使用佈局時,顏色正確顯示。例如:

TextView newType = new TextView(rilLteCells.getContext()); 
    newType.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 2)); 
    newType.setTextAppearance(rilLteCells.getContext(), android.R.style.TextAppearance_Medium); 
    newType.setTextColor(rilLteCells.getContext().getResources().getColor(getColorFromGeneration(cell.getGeneration()))); 
    newType.setText(rilLteCells.getContext().getResources().getString(R.string.smallDot)); 
    row.addView(newType); 

回答

1

得到相關的顏色。

無論我遇到此問題,顯示在控件中的文本都是單個正方形(U + 2b1b)。當我改變這個文本(例如通過附加一個X)時,只有正方形將以橙色顯示,而其餘的字符串具有所需的顏色。

更改爲一個小方塊(U + 25fc)固定的東西。其他一些特殊字符會給我其他顏色 - 顯然某些字符固定在棉花糖上的某些顏色,在早期版本中,它們可以像任何其他文本一樣進行設置。

1

使用ContextCompat類,它是一種用於在向後兼容的方式訪問API級4之後引入在上下文特徵輔助類。

accStatus.setTextColor(ContextCompat.getColor(context, R.color.somecolor)); 

public static final int getColor (Context context, int id)

       返回與特定資源ID

+1

如果我直接在佈局中設置顏色,我該怎麼做? – user149408

+0

它將從您的色彩資源中選取合適的顏色。 –

+1

這正是不起作用的。即使在佈局中指定顏色資源時,它也會顯示爲橙色。 – user149408

0

面對我的索尼Xperia(Android 6.0棉花糖)相同的問題。原因是設置/輔助功能/高對比度文本(實驗性)已啓用。

當我禁用它時,它按預期再次正常工作。