HTC Sense / EVO не учитывает цвет EditText при записи - PullRequest
4 голосов
/ 28 февраля 2012

У меня проблема на конкретном устройстве, HTC EVO на Android 2.3.x.Я думаю, что это может быть специфическая проблема HTC Sense.

У меня в основном EditText с прозрачным фоном (# 00000000) и белым текстом, настроенным на ввод адреса электронной почты (inputType равен textEmailAddress).).

Проблема: когда пользователь пишет адрес электронной почты, однако текст черный, поэтому его невозможно прочитать.

Когда пользователь меняет фокус на другой элемент представления, текст отображается правильнообратно в белый цвет.

Если пользователь снова фокусируется на EditText, ранее введенный текст остается белым, но любой новый текст является черным.

Если я изменю inputType с textEmailAddress, скажем, ничего, или 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>

Есть предложения?Я попробовал несколько вещей, включая изменение всех видов цветов (в случае, если он пытается «угадать» цвет текста для выделения выделения), и ничего не работает;нет способа установить цвет текста, который пишется ... он всегда черный.

Ответы [ 2 ]

4 голосов
/ 15 ноября 2012

Я хотел бы добавить небольшой комментарий - использование Spannable.SPAN_EXCLUSIVE_EXCLUSIVE в некоторых случаях может привести к:

IndexOutOfBoundsException: setSpan(...

, чтобы избежать того, что мы просто должны выбрать другой флаг диапазона, для меня работает Spannable.SPAN_COMPOSING.

Я получал упомянутое исключение, когда редактировал текст в представлении EditText и получил входящий вызов. Также в ситуации, когда я редактировал текст посередине, а затем пытался добавить символ в конце (только на устройствах с HTC Sense версии <2.1). </strong>

3 голосов
/ 08 мая 2012

Я испытал то же самое на некоторых HTC. Я реализовал TextWatcher, чтобы заставить цвет текста как Spannable при вводе в 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);
        }
    }

Затем примените его к вашему EditText

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