setHintTextColor () EditText में


88

मेरे पास व्यू है जिसमें दो टेक्स्ट बॉक्स हैं, और उपयोगकर्ता उसी स्क्रीन पर एक अन्य दृश्य से (डायलॉग बॉक्स के माध्यम से) टेक्स्ट कलर का चयन कर सकता है।

इसलिए जब उपयोगकर्ता संवाद बॉक्स के माध्यम से रंग बदलता है, तो मैं EditTextपाठ और उसके संकेत का रंग बदल रहा हूं । लेकिन जब कुछ पाठ उपलब्ध होता है, EditTextउसके बाद उपयोगकर्ता दूसरे रंग का चयन करता है, तो वह पाठ उस रंग में आ जाता है। लेकिन अगर मैं वह सब पाठ हटा दूं तो हिंटटेक्स्ट का रंग पिछले रंग का है।

उदाहरण के लिए, वर्तमान में यदि मेरे पास टेक्स्ट बॉक्स में लाल रंग है और उपयोगकर्ता हरे रंग का चयन करता है तो पाठ हरे रंग में है। लेकिन अगर मैं उस पाठ को हटाता हूं तो कोड में संकेत रंग बदलने पर भी संकेत पाठ लाल रंग में आ रहे हैं । यह समस्या केवल तब आती है जब वहाँ कुछ पाठ होता है। यदि यह रिक्त है और संकेत पाठ है तो समस्या नहीं आ रही है।


1
यह बाहर की जाँच करें stackoverflow.com/questions/25134463/…
Nabin

जवाबों:


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
ऐसा जटिल समाधान जो आधी लाइन में पूरा किया जा सकता है, जैसा कि नीचे दिए गए जवाब में है।
जीशान

8
क्योंकि वह समाधान उसकी समस्या हल नहीं कर रहा है?
evaristokbza

318

सीधे शब्दों में इसे अपने layoutलिए जोड़ें EditText:

एंड्रॉयड: textColorHint = "# FFFFFF"


9
यह ओपी के सवाल को कैसे हल करना चाहिए? सवाल यह है कि हिंट कलर को डायनमिकली कैसे बदलें जब एडिटटेक्स्ट में कुछ टेक्स्ट हो और मैं नहीं देखता कि यह कैसे हल होगा ...
evaristokbza

5
कृपया प्रश्न को ध्यान से पढ़ें। लेखक ने उचित तरीके से नहीं पूछा है।
आनंद चव्हाण

22

डिफ़ॉल्ट रंग:

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

रंग कोड के लिए:

android:textColorHint="#33b5e5"

ये संपादन व्यक्तिगत रूप से न लें। संपादन मूल रूप से उत्तर की पठनीयता में सुधार करता है और / या इसकी पूर्णता में सुधार करता है। इसके अलावा, यदि लागू हो, तो उस कोड के बारे में स्पष्टीकरण जोड़ें जहां आवश्यक हो, जैसे कि ओपी क्या समस्या है या क्या समस्या है, आदि :)
सूफियान

15

अंदर लेआउट Xml फ़ाइल हम संकेत का रंग बदल सकते हैं .....

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

आप रंग या रंग कोड के साथ * प्रतिस्थापित कर सकते हैं ।


7

लगता है कि EditText केवल hintTextColor लागू होता है, यदि पाठ खाली है। तो सरल समाधान इस तरह होगा

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

यदि आपके पास कई फ़ील्ड हैं, तो आप EditText का विस्तार कर सकते हैं और एक विधि लिख सकते हैं जो इस तर्क को निष्पादित करती है और इसके बजाय उस पद्धति का उपयोग करती है।


6

जावा में प्रोग्रामेटिक रूप से - कम से कम एपीआई v14 +

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


1
मेरे सैमसंग एस 5 एपीवी 19 पर भी यही परेशानी है, जैसा कि @dishan ने उल्लेख किया है: setHintTextColor(color)यदि कोई पाठ है, तो काम नहीं कर रहा है ""
दिमित्री ग्रायाज़िन

2

यह डिफ़ॉल्ट संकेत रंग की तरह है, मेरे लिए काम किया:

editText.setHintTextColor(Color.GRAY);


0

editText.invalidate()संकेत रंग को रीसेट करने के बाद आप कॉल कर सकते हैं । जिससे आपकी समस्या का समाधान हो सके। दरअसल SDK उसी तरह से कलर को अपडेट करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.