2

ログインページにユーザーの電話番号を表示する単純な 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>
4

1 に答える 1

6

EditText テキストの色を変更する方法を見つけました。

を使用しても、EditText 内のテキストの色を変更することはできandroid:textAppearanceません(テキスト サイズを変更することはできます)。

代替手段の 1 つは、 のstyle代わりに 属性を使用することですandroid:textAppearance。これにより、テキストの色の変更が適用されます。

style="@style/MyStyle"

ただし、最善の解決策はColorStateListを使用することだと思います。以下は私の解決策です。

res/layout/myscreen.xml (テキスト サイズを制御するには textAppearance が必要です):

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

res/color/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/values/styles.xml (つまり、MyStyle で色ではなくテキスト サイズのみを定義するようにします):

<style name="MyStyle">
  <item name="android:textSize">14dp</item>
</style>
于 2012-06-13T23:44:18.310 に答える