EditTextのsetHintTextColor()


88

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

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

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


1
これをチェックしてください。stackoverflow.com
questions / 25134463 /

回答:


56

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

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

318

単にあなたにこれを追加layoutするためにEditText

android:textColorHint = "#FFFFFF"


9
これはOPの質問をどのように解決するはずですか?問題は、EditTextにテキストが含まれているときにヒントカラーを動的に変更する方法についてです。これでどのように解決されるかわかりません...
evaristokbza

5
質問をよく読んでください。著者は適切な方法で尋ねていません。
Anand Chavan 2014年

22

デフォルトの色:

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

カラーコードの場合:

android:textColorHint="#33b5e5"

これらの編集を個人的に行わないでください。編集すると、基本的に回答の可読性が向上したり、回答の完全性が向上したりします。また、該当する場合は、必要に応じてコードについての説明を追加します。たとえば、OPが何をしているか、どのような問題に直面しているかなどを追加します。:)
Sufian

15

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

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

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


7

思われるのEditTextはテキストが空の場合にのみhintTextColorを適用します。だから簡単な解決策はこのようになります

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

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


6

プログラムによるJavaで-少なくともAPI v14以降

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


1
私のサムスンS5 apiV19でも、@ dishanが述べたのと同じ問題が発生しsetHintTextColor(color)ます""。テキストがある場合は機能しません。
ドミトリーグリアジン2015

2

これはデフォルトのヒントカラーのようなもので、私にとってはうまくいきました:

editText.setHintTextColor(Color.GRAY);


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.