4

我在特定设备上遇到问题,即 Android 2.3.x 上的 HTC EVO。我认为这可能是 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>

有什么建议么?我尝试了几件事,包括更改各种颜色(以防它试图“猜测”选择突出显示的文本颜色)但没有任何效果;无法设置正在写入的文本的颜色......它总是黑色的。

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 中键入时,我实现了一个 TextWatcher 以强制文本颜色为 Spannable

    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 回答