ログインページにユーザーの電話番号を表示する単純な EditText フィールドがあります。最初のログイン後、電話番号フィールドは無効になっています。
これは、ほとんどすべてのデバイスで見栄えがします (このスクリーンショットは Samsung 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 Nitro を含む) で読みやすくなりました。
@color/black
既存の色の代わりにカスタム スタイルを使用するように設定しましたが、テキストはまだ白で表示されていました。
質問 2:使用できるより良い回避策はありますか?
私の LG Nitro は、OS 2.3.5 を実行するモデル LG-P930 です。
私のXML
以下は、私が使用している XML のスニペットです。
res/layout/myscreen.xml:
<EditText
...
android:textAppearance="@style/MyStyle">
</EditText>
res/values/styles.xml:
<style name="MyStyle">
<item name="android:textSize">14dp</item>
<item name="android:textColor">@color/blue</item>
</style>
res/values/colors.xml:
<color name="white">#ffffffff</color>
<color name="blue">#ff0000ff</color>
<color name="black">#ff000000</color>