web-dev-qa-db-ja.com

EditTextのsetHintTextColor()

2つのテキストボックスがあるビューがあり、ユーザーは(ダイアログボックスを介して)同じ画面上の別のビューからテキストの色を選択できます。

そのため、ユーザーがダイアログボックスで色を変更すると、EditTextテキストの色とそのヒントが変更されます。しかし、ユーザーが他の色を選択した後、EditTextで利用可能なテキストがある場合、そのテキストはその色で表示されます。しかし、すべてのテキストを削除すると、HintTextの色は前の色になります。

たとえば、現在テキストボックスに赤い色があり、ユーザーが緑色を選択すると、テキストは緑色になります。しかし、そのテキストを削除すると、コードでヒントの色を変更であっても、ヒントテキストが赤くなります。この問題は、テキストが存在する場合にのみ発生します。空白でヒントテキストがある場合、問題は発生していません。

87
kartik trivedi

これを使用して、ヒントの色を変更します。 -

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));
    }
});
54

これをlayoutEditTextに追加するだけです:

Android:textColorHint = "#FFFFFF"

318
Anand Chavan

デフォルトの色:

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

カラーコードの場合:

Android:textColorHint="#33b5e5"
21
kiran kumar

内部レイアウトXmlファイルのヒントの色を変更できます。

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

*をカラーまたはカラーコードに置き換えることができます。

15
Akhil s

EditText は、テキストが空の場合にのみhintTextColorを適用するようです。簡単な解決策は次のようになります

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

複数のフィールドがある場合、EditTextを拡張し、このロジックを実行するメソッドを記述して、代わりにそのメソッドを使用できます。

7
dishan

Javaでプログラム的に-少なくともAPI v14 +

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

5
Michael

これは私のために働いたデフォルトのヒント色のようなものです:

editText.setHintTextColor(Color.GRAY);

2
karan

ヒントの色をリセットした後、editText.invalidate()を呼び出すことができます。これで問題を解決できます。実際、SDKは同じ方法で色を更新します。

0
freshomer