2012-02-28 54 views
4

我在特定设备上出现问题,Android 2.3.x上的HTC EVO。我认为这可能是HTC Sense特有的问题。HTC Sense/EVO在编写时不尊重EditText颜色

我基本上有一个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

我有完全相同的问题。您是否找到比TextWatcher更好的方法(这里是答案之一)? – Enigma 2012-08-03 10:53:22

+0

不,最后我只使用了常规的inputType。 :( – zeh 2012-08-03 14:17:19

回答

3

我在某些HTCs上经历过同样的事情。 我实现了一个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)); 
+0

最接近解决方案,没有亲自尝试,但看起来不够好,谢谢。 – zeh 2012-12-03 20:04:29

4

我想在这里补充一个小评论 - 在某些情况下使用Spannable.SPAN_EXCLUSIVE_EXCLUSIVE可引起:

IndexOutOfBoundsException: setSpan(...

为了避免这个问题,我们只好选择不同的跨度标志,对我来说作品Spannable.SPAN_COMPOSING

当我编辑EditText视图中的文本并收到来电时,我被提到异常。此外,在我编辑中间文本的情况下,然后我尝试在末尾添加一个字符(仅在具有HTC Sense版本< 2.1的设备上)。