EditText içinde setHintTextColor ()


88

İki metin kutusunun bulunduğu Görünümüm var ve kullanıcı aynı ekrandaki başka bir görünümden metin rengini seçebilir (iletişim kutusu aracılığıyla).

Dolayısıyla, kullanıcı iletişim kutusu aracılığıyla renk değiştirdiğinde, EditTextmetnin rengini ve ipucunu değiştiriyorum. Ancak EditText, kullanıcı başka bir rengi seçtikten sonra bir metin mevcut olduğunda , o metin o renkte gelir. Ancak tüm bu metni kaldırırsam, HintText'in rengi önceki rengin rengidir.

Örneğin, şu anda metin kutusunda kırmızı renk varsa ve kullanıcı yeşil rengi seçerse, metin orada yeşil renkte olur. Ancak bu metni kaldırırsam, kodda ipucu rengini değiştirsem bile ipucu metni kırmızı geliyor . Bu sorun yalnızca orada bir metin olduğunda ortaya çıkar. boşsa ve ipucu metni varsa sorun gelmiyor demektir.


Yanıtlar:


58

İpucu rengini değiştirmek için bunu kullanın. -

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

Probleminizin çözümü -

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
Neden aşağıda anandc'nin yanıtladığı gibi yarım satırda gerçekleştirilebilecek bu kadar karmaşık bir çözüm?
zeeshan

8
çünkü bu çözüm onun problemini çözmüyor?
evaristokbza

320

Basitçe bu eklemek layoutiçin EditText:

android: textColorHint = "# FFFFFF"


9
Bu, OP'nin sorusunu nasıl çözecek? soru, EditText'te bir metin olduğunda ipucu renginin DİNAMİK OLARAK nasıl değiştirileceğiyle ilgili ve bunun bunu nasıl çözeceğini bilmiyorum ...
evaristokbza 05.07.2014

6
Lütfen soruyu dikkatlice okuyunuz. yazar uygun bir şekilde sormadı.
Anand Chavan

23

Varsayılan Renkler:

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

Renk kodu için:

android:textColorHint="#33b5e5"

bu düzenlemeleri kişisel olarak almayın. Düzenleme, temelde cevabın okunabilirliğini ve / veya tamlığını iyileştirir. Ayrıca, uygunsa, gereken yerlere kod hakkında açıklama ekleyin, örneğin ne olduğu veya OP'nin karşılaştığı sorun vb. :)
Sufian

15

Layout Xml Dosyası İçinde İpucu Rengini Değiştirebiliriz .....

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

* yerine renk veya renk kodu koyabilirsiniz .


7

O görünüyor EditText metin boş olması halinde hintTextColor geçerlidir. Çok basit çözüm böyle olacak

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

Birden fazla alanınız varsa, Metni Düzenle'yi genişletebilir ve bu mantığı yürüten bir yöntem yazabilir ve bunun yerine bu yöntemi kullanabilirsiniz.


6

Java'da programlı olarak - En azından API v14 +

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


1
Samsung S5 apiV19'umda @dishan'ın belirttiği gibi aynı sorun: setHintTextColor(color)bazı metin olması durumunda çalışmıyor, BİLE "".
Dmitry Gryazin

2

Bu, varsayılan ipucu rengi gibidir, benim için çalıştı:

editText.setHintTextColor(Color.GRAY);


0

editText.invalidate()İpucu rengini sıfırladıktan sonra arayabilirsiniz . Bu, sorununuzu çözebilir. Aslında SDK rengi aynı şekilde günceller.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.