其他分享
首页 > 其他分享> > android – HTC Sense / EVO在编写时不尊重EditText颜色

android – HTC Sense / EVO在编写时不尊重EditText颜色

作者:互联网

我在特定设备上遇到问题,Android 2.3.x上的HTC EVO.我认为这可能是HTC Sense特有的问题.

我基本上有一个带有透明背景(#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>

有什么建议?我尝试了几种方法,包括改变各种颜色(如果它试图“猜测”选择高亮的文本颜色)并且没有任何作用;没有办法设置正在写入的文本的颜色……它总是黑色的.

解决方法:

我在一些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));

标签:android,android-edittext,sense
来源: https://codeday.me/bug/20190613/1234075.html