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.


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

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"


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"

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.


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.


6

Secara terprogram di Java - Setidaknya API v14 +

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


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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.