4

特定のデバイス、Android 2.3.x の HTC EVO で問題が発生しています。これは HTC Sense 固有の問題である可能性があります。

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

問題:しかし、ユーザーが電子メール アドレスを書いているときに、テキストが黒くなり、読み取ることができません。

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

ユーザーが再び にフォーカスするEditTextと、以前に入力したテキストはまだ白ですが、新しいテキストは黒です。

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

テキストを常に読みやすく (つまり、書くときは白く)、適切な (電子メール) エントリが必要です。提案があろうとなかろうと、それは問題ではありません。

used は十分に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>

助言がありますか?すべての種類の色を変更するなど、いくつかのことを試しました(選択ハイライトのテキストの色を「推測」しようとしている場合)が、何も機能しません。書かれているテキストの色を設定する方法はありません...常に黒です。

4

2 に答える 2

4

ここに小さなコメントを追加したいと思います-Spannable.SPAN_EXCLUSIVE_EXCLUSIVE場合によっては使用すると、次のことが発生する可能性があります。

IndexOutOfBoundsException: setSpan(...

それを避けるために、私は別のスパンフラグを選択する必要がありますSpannable.SPAN_COMPOSING

ビューでテキストを編集しているときに例外が発生しEditText、着信がありました。また、途中でテキストを編集していて、最後に文字を追加しようとした場合もあります(HTC Senseバージョンが2.1未満のデバイスのみ)。

于 2012-11-15T13:37:45.937 に答える
3

一部のHTCで同じことを経験しました。EditText に入力するときに、テキストの色を Spannable として強制する TextWatcher を実装しました。

    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);
        }
    }

次に、それを EditText に適用します

myEditText1.addTextChangedListener(new HTCEditTextFix(myEditText1));
于 2012-05-08T18:59:04.147 に答える