2011-06-22 84 views
84

我有視圖中有兩個文本框,用戶可以從同一屏幕上的另一個視圖(通過對話框)選擇文本顏色。在EditText中的setHintTextColor()

所以當用戶通過對話框改變顏色時,我正在改變EditText文本的顏色及其提示。但是當用戶選擇其他顏色後,在EditText中有一些文本可用時,則該文本將以該顏色顯示。但是如果我刪除所有文字,那麼顏色HintText是以前的顏色。

例如,如果我在文本框中顯示紅色,並且用戶選擇綠色,則文本以綠色顯示。但是,如果我刪除該文本,然後提示文本即將紅色即使我更改提示顏色在代碼中。這個問題只出現在那裏有一些文字。如果它是空白的並且提示文本存在,那麼問題就不會出現。

+1

檢查了這一點的http:/ /stackoverflow.com/questions/25134463/edittext-unable-to-change-the-text-color/25134499#25134499 – Nabin

回答

49

使用此選項可更改提示顏色。 -

editText.setHintTextColor(getResources().getColor(R.color.white)); 

解決您的問題 -

editText.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void onTextChanged(CharSequence arg0, int arg1, int arg2,int arg3){ 
     //do something 
    } 

    @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
     //do something 
    } 

    @Override 
    public void afterTextChanged(Editable arg0) { 
     if(arg0.toString().length() <= 0) //check if length is equal to zero 
      tv.setHintTextColor(getResources().getColor(R.color.white)); 
    } 
}); 
+7

爲什麼這樣一個複雜的解決方案可以在半個線上完成,正如anandc在下面回答的那樣。 – zeeshan

+8

因爲這個解決方案沒有解決他的問題? – evaristokbza

317

只需在您的layoutEditText補充一點:

機器人:textColorHint = 「#FFFFFF」

+8

這是如何解決OP的問題?問題是關於如何改變提示顏色DYNAMICALLY當EditText有一些文本,我不知道這將如何解決它... – evaristokbza

+5

請仔細閱讀這個問題。作者沒有以適當的方式提問。 –

+1

這個答案應該被接受爲正確的答案。 –

15

內部佈局Xml文件我們可以改變提示顏色.....

android:textColorHint="@android:color/*****" 

可以更換*用顏色或顏色代碼。

4

編程在Java中 - 至少API V14 +

exampleEditText.setHintTextColor(getResources().getColor(R.color.your_color));

+1

對我的三星S5 apiV19同樣麻煩,就像@dishan提到的那樣:'setHintTextColor(color)'在沒有文本的情況下工作,即使是''「''。 –

7

似乎EditText應用hintTextColor只有當文本是空的。所以,簡單的解決方案會是這樣

Editable text = mEditText.getText(); 
mEditText.setText(null); 
mEditText.setHintTextColor(color); 
mEditText.setText(text); 

如果你有多個字段,你可以擴展的EditText或寫入執行這一邏輯的方法和使用該方法。

2

這就像默認的提示顏色,爲我工作:

editText.setHintTextColor(Color.GRAY);

21

默認顏色:

android:textColorHint="@android:color/holo_blue_dark" 

對於顏色代碼:

android:textColorHint="#33b5e5" 
+0

不要親自進行這些編輯。編輯基本上可以提高答案的可讀性和/或提高答案的完整性。此外,如果適用,在需要的地方添加有關代碼的解釋,例如OP正在面臨什麼問題或什麼問題等。:) – Sufian