setHintTextColor () di EditText

88

Saya memiliki Tampilan di mana terdapat dua kotak teks, dan pengguna dapat memilih warna teks dari tampilan lain pada layar yang sama (melalui kotak dialog).

Jadi ketika pengguna mengubah warna melalui kotak dialog, saya mengubah warna EditTextteks dan petunjuknya. Tetapi ketika ada beberapa teks yang tersedia EditTextsetelah pengguna memilih warna lain, maka teks itu datang dengan warna itu. Tetapi jika saya menghapus semua teks itu maka warna HintText adalah warna sebelumnya.

Misalnya, saat ini jika saya memiliki warna merah di kotak teks dan pengguna memilih warna hijau maka teks ada dalam warna hijau. Tetapi jika saya menghapus teks itu maka teks petunjuk akan berwarna merah meskipun saya mengubah warna petunjuk dalam kode. Masalah ini hanya muncul jika ada beberapa teks di sana. jika kosong dan ada teks petunjuk maka masalah tidak datang.

kartik trivedi
sumber

Jawaban:

57

Gunakan ini untuk mengubah warna petunjuk. -

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

Solusi untuk masalah Anda -

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));
    }
});
Sunil Kumar Sahoo
sumber
7
Mengapa solusi rumit yang dapat dicapai dalam setengah baris, seperti yang dijawab anandc di bawah ini.
zeeshan
8
karena solusi itu tidak menyelesaikan masalahnya?
evaristokbza
319

Cukup tambahkan ini di Anda layoutuntuk EditText:

android: textColorHint = "# FFFFFF"

Anand Chavan
sumber
9
Bagaimana ini seharusnya menjawab pertanyaan OP? pertanyaannya adalah tentang bagaimana mengubah warna petunjuk secara DINAMIS ketika EditText memiliki beberapa teks dan saya tidak melihat bagaimana ini akan menyelesaikannya ...
evaristokbza
5
Harap baca pertanyaannya dengan cermat. penulis tidak bertanya dengan cara yang tepat.
Anand Chavan
22

Warna Default:

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

Untuk kode Warna:

android:textColorHint="#33b5e5"
kiran kumar
sumber
jangan ambil hasil edit ini secara pribadi. Mengedit pada dasarnya meningkatkan keterbacaan jawaban dan / atau meningkatkan kelengkapannya. Juga, jika ada, tambahkan penjelasan tentang kode jika diperlukan, seperti apa yang dilakukan atau masalah apa yang dihadapi OP, dll. :)
Sufian
15

Di Dalam File Layout Xml Kita Dapat Mengubah Warna Petunjuk .....

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

Anda dapat mengganti * dengan warna atau kode warna.

Akhil s
sumber
7

Tampaknya EditText menerapkan hintTextColor hanya jika teksnya kosong. Jadi solusi sederhananya akan seperti ini

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

Jika Anda memiliki beberapa kolom, Anda dapat memperluas EditText dan menulis metode yang menjalankan logika ini dan sebagai gantinya menggunakan metode itu.

dishan
sumber
6

Secara terprogram di Java - Setidaknya API v14 +

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

Michael
sumber
1
pada samsung S5 apiV19 saya masalah yang sama, seperti yang disebutkan @dishan: setHintTextColor(color)tidak berfungsi jika ada teks, BAHKAN jika itu "".
Dmitry Gryazin
2

Ini seperti warna petunjuk default, berfungsi untuk saya:

editText.setHintTextColor(Color.GRAY);

karan
sumber
0

Anda bisa menelepon editText.invalidate()setelah Anda mengatur ulang warna petunjuk. Itu bisa menyelesaikan masalah Anda. Sebenarnya SDK memperbarui warna dengan cara yang sama.

freshomer
sumber