我在特定设备上遇到问题,Android 2.3.x上的HTC EVO。我认为这可能是特定于HTC Sense的问题。
我基本上有EditText
透明背景(#00000000)和白色文字,设置为允许输入电子邮件地址(inputType为textEmailAddress
)。
问题:当用户正在写电子邮件地址时,文字是黑色的,因此无法阅读。
当用户将焦点更改为另一个视图元素时,文本会正确地着色回白色。
如果用户重点关注EditText
,之前输入的文字仍然是白色,但任何新文字都是黑色。
如果我从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>
有什么建议吗?我尝试了几种方法,包括改变各种颜色(如果它试图“猜测”选择高亮的文本颜色)并且没有任何作用;没有办法设置正在写入的文本的颜色......它总是黑色的。
答案 0 :(得分:4)
我想在此处添加一条小评论 - 在某些情况下使用Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
会导致:
IndexOutOfBoundsException: setSpan(...
为了避免这种情况,我们必须选择不同的跨度标志,对我而言Spannable.SPAN_COMPOSING
。
当我在EditText
视图中编辑文本并收到来电时,我被提到异常。此外,当我在中间编辑文本然后我尝试在末尾添加一个字符时(仅在具有HTC Sense版本&lt; 2.1的设备上)。
答案 1 :(得分:3)
我在一些HTC上经历过同样的事情。 我在TextText
中键入时实现了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));