2012-02-28 52 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的設備上)。