2012-06-13 67 views
2

我有一個簡單的EditText字段,顯示登錄頁面上用戶的電話號碼。初次登錄後,電話號碼字段被禁用。在某些設備上禁用時,EditText無法讀取

這在幾乎所有的設備看起來很大(這個截圖是從三星Galaxy S):
enter image description here

然而,在我的LG Nitro在殘疾人的EditText字段中的文本是不可讀(我可以能看到白色的文字,如果我放大某個高分辨率截圖):
enter image description here

我刪除從EditText上,並出現同樣的問題我所有的自定義樣式規則,所以我認爲這僅僅是一個壞的選擇系統默認列或者打電話。

問題1:有人可以確認我的診斷是否正確嗎?

我可以使文本可讀的唯一方法是在代碼中設置文本深灰色:

if (fieldDisabled) 
{ 
    // Some devices use their own default style for a disabled text field, 
    // which makes it impossible to read its text, e.g. the LG Nitro. 
    // 
    // The workaround is to override the text color here. 
    mPhoneNumber.setTextColor(Color.DKGRAY); 
} 

之後的文本很容易上的所有設備(包括LG硝基)閱讀:
enter image description here

我將自定義樣式設置爲使用@color/black代替現有顏色,但文本仍顯示爲白色。

問題2:有沒有更好的解決方法我可以使用?

我的LG Nitro是運行OS 2.3.5的型號LG-P930。

我的XML

下面是我使用的XML的片段。

RES /佈局/ myscreen.xml:

<EditText 
    ... 
    android:textAppearance="@style/MyStyle"> 
</EditText> 

RES /值/ styles.xml:

<style name="MyStyle"> 
    <item name="android:textSize">14dp</item> 
    <item name="android:textColor">@color/blue</item> 
</style> 

RES /值/ colors.xml:

<color name="white">#ffffffff</color> 
<color name="blue">#ff0000ff</color> 
<color name="black">#ff000000</color> 
+2

而不是禁用的EditText後,您可以進行的EditText可聚焦假的初始狀態。所以它不會得到重點,它會看起來很完美 – Sumant

+0

這是一個很好的建議,並做了我想要的很多東西。僅供參考,我需要調用setFocusableInTouchMode(false)以及setFocusable(false)才能使其工作。然而,缺點是它弄亂了我的焦點邏輯(我可以修復),更重要的是,文本字段現在看起來像一個啓用的文本字段而不是禁用的字段。 –

+0

是的,我認爲通過你的問題解決.... :) – Sumant

回答

6

我想出瞭如何改變EditText文本的顏色。

使用android:textAppearance確實不是似乎允許您更改EditText中文本的顏色(它可以讓您更改文本大小)。

一種替代方法是使用style屬性而不是android:textAppearance,因爲這將應用文本顏色更改,例如,

style="@style/MyStyle" 

但是,我認爲最好的解決方案是使用ColorStateList。以下是我的解決方案。

RES /佈局/ myscreen.xml(仍需textAppearance控制文字大小):

<EditText 
    ... 
    android:textColor="@color/edittext" 
    android:textAppearance="@style/MyStyle"> 
</EditText> 

RES /顏色/ edittext.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="true" android:color="@color/black" /> 
    <item android:state_enabled="false" android:color="@color/grey" /> 
</selector> 

RES /價值/風格。 XML(即讓myStyle的唯一定義文本大小,不變色):

<style name="MyStyle"> 
    <item name="android:textSize">14dp</item> 
</style> 
相關問題