2012-02-28 3 views
4

Android 2.3.xの特定のデバイスであるHTC EVOに問題があります。私はこれがHTC Sense特有の問題かもしれないと思う。HTC Sense/EVOは、書き込み時にEditTextの色を尊重しません。

私は基本的に、透明な背景(#00000000)と白いテキストを持つEditTextを持っており、電子メールアドレスの入力を許可するように設定されています(inputTypeはtextEmailAddressです)。

問題:ただし、ユーザーが電子メールアドレスを書き込んでいるときには、テキストは黒色であるため、読むことはできません。

ユーザーがフォーカスを別のビュー要素に変更すると、テキストが正しく白に戻されます。

ユーザーがEditTextに戻ってきた場合、以前入力したテキストはまだ白ですが、新しいテキストはすべて黒です。

私が言って、textEmailAddressからinputTypeを変更した場合は、何も、またはtextFilterは、テキストが正しくレンダリングされていない...それはまだ黒だが、それが原因のキーボードが提供する「提案」にその周りにハイライトを(持っています - textEmailAddressタイプには表示されません)。したがって、読み取りが可能です。欠点は、電子メールの入力方法(キーボードに "@"付き)がないことです。

私は自分のテキストを常に読むことができるようにしたい(書いているときは白い)し、正しい(電子メール)を書くことを望む。提案かどうか、それは重要ではありません - それは読みやすいものでなければなりません。使用

EditText十分に単純です:

<EditText 
    android:id="@+id/fieldEmail" 
    android:layout_width="match_parent" 
    android:layout_height="42dp" 
    android:layout_marginTop="10dp" 
    android:hint="Enter your email" 
    android:textSize="16dp" 
    android:textColor="#ffffffff" 
    android:textColorHint="#ffffffff" 
    android:textColorLink="#ffffffff" 
    android:background="#00000000" 
    android:inputType="textEmailAddress"> 
</EditText> 

任意の提案ですか?私はいくつかのことを試みました。すべての種類の色を変更しました(選択のためのテキスト色を "推測"しようとしている場合など)。書き込まれるテキストの色を設定する方法はありません。常に黒です。

+0

私は全く同じ問題を抱えています。あなたはTextWatcher(ここの答えの1つ)メソッドよりも良い方法を見つけましたか? – Enigma

+0

いいえ、私はちょうど通常のinputTypeを使いました。 :( – zeh

答えて

3

私はいくつかのHTCで同じことを経験しました。 は、私はここに小さなコメントを追加したいあなたはのEditText

private class HTCEditTextFix implements TextWatcher { 
     private EditText mEditText; 
     public HTCEditTextFix(EditText editText) { 
      mEditText = editText; 
     } 
     public void afterTextChanged(Editable s) {} 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      mEditText.getText().setSpan(new ForegroundColorSpan(Color.WHITE), start, start, Spannable.SPAN_COMPOSING); 
     } 
    } 

に入力すると、次にSpannableとしてテキストの色を強制あなたのEditText

myEditText1.addTextChangedListener(new HTCEditTextFix(myEditText1)); 
+0

解決策に最も近い。個人的には試していないが、十分に見える。 – zeh

4

に適用するTextWatcherを実装しました - いくつかのケースでSpannable.SPAN_EXCLUSIVE_EXCLUSIVEを使用すると発生する可能性があります:

IndexOutOfBoundsException: setSpan(...

私は単純に別のスパンフラグを選択する必要があることを避けるために、私にとってはSpannable.SPAN_COMPOSINGの作品です。

私はEditTextビューでテキストを編集していて、着信を受けた時に例外を言いました。また、途中でテキストを編集していたときに、最後に文字を追加しようとしました。(HTCセンスバージョン< 2.1のデバイスのみ)。

関連する問題