我有一個簡單的EditText字段,顯示登錄頁面上用戶的電話號碼。初次登錄後,電話號碼字段被禁用。在某些設備上禁用時,EditText無法讀取
這在幾乎所有的設備看起來很大(這個截圖是從三星Galaxy S):
然而,在我的LG Nitro在殘疾人的EditText字段中的文本是不可讀(我可以能看到白色的文字,如果我放大某個高分辨率截圖):
我刪除從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硝基)閱讀:
我將自定義樣式設置爲使用@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>
而不是禁用的EditText後,您可以進行的EditText可聚焦假的初始狀態。所以它不會得到重點,它會看起來很完美 – Sumant
這是一個很好的建議,並做了我想要的很多東西。僅供參考,我需要調用setFocusableInTouchMode(false)以及setFocusable(false)才能使其工作。然而,缺點是它弄亂了我的焦點邏輯(我可以修復),更重要的是,文本字段現在看起來像一個啓用的文本字段而不是禁用的字段。 –
是的,我認爲通過你的問題解決.... :) – Sumant