जवाबों:
यह सबसे अच्छा उपकरण है जिसे आप सभी दृश्यों के लिए उपयोग कर सकते हैं और इसके फ्री @ Jérôme Van Der Linden के लिए बहुत धन्यवाद ।
एंड्रॉइड होलो कलर्स जेनरेटर आपको EditTextअपने एंड्रॉइड एप्लिकेशन के लिए अपने स्वयं के रंगों के साथ आसानी से एंड्रॉइड घटकों जैसे या स्पिनर बनाने की अनुमति देता है । यह सभी आवश्यक नौ पैच एसेट्स से जुड़े एक्सएमएल ड्रॉबल और स्टाइल उत्पन्न करेगा, जिन्हें आप सीधे अपने प्रोजेक्ट में कॉपी कर सकते हैं।
अद्यतन १
यह डोमेन समाप्त हो गया लगता है, लेकिन यह परियोजना एक खुला स्रोत है जिसे आप यहां पा सकते हैं
कोशिश करो
इस छवि को पृष्ठभूमि में रखा गया है EditText
android:background="@drawable/textfield_activated"

अद्यतन २
एपीआई 21 या उच्चतर के लिए, आप उपयोग कर सकते हैं android:backgroundTint
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Underline color change"
android:backgroundTint="@android:color/holo_red_light" />
अपडेट 3
अब हमारे पास बैक सपोर्ट हैAppCompatEditText
नोट: हमें ऐप का उपयोग करने की आवश्यकता है : android के बजाय backgroundTint: backgroundTint
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Underline color change"
app:backgroundTint="@color/blue_gray_light" />
मुझे पिछले उत्तर पसंद नहीं हैं। उपयोग करने के लिए सबसे अच्छा समाधान है:
<android.support.v7.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
android:backgroundTintके लिए EditTextकेवल पर काम करता है API21 + । इसके कारण, हमें समर्थन पुस्तकालय और का उपयोग करना होगाAppCompatEditText ।
नोट: हमें app:backgroundTintइसके बजाय उपयोग करना हैandroid:backgroundTint
AndroidX संस्करण
<androidx.appcompat.widget.AppCompatEditText
app:backgroundTint="@color/blue_gray_light" />
आप EditText के बैकग्राउंड को इस तरह से EditText के अंडरलाइन रंग को जल्दी से बदल सकते हैं:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Something or Other"
android:backgroundTint="@android:color/holo_green_light" />
21 से नीचे एपीआई के लिए , आप EditText
शैली फ़ाइल में कोड नीचे डाल में विषय विशेषता का उपयोग कर सकते हैं
<style name="MyEditTextTheme">
<item name="colorControlNormal">#FFFFFF</item>
<item name="colorControlActivated">#FFFFFF</item>
<item name="colorControlHighlight">#FFFFFF</item>
</style>
में इस शैली का उपयोग EditTextके रूप में
<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="@dimen/user_input_field_height"
android:layout_marginTop="40dp"
android:hint="@string/password_hint"
android:theme="@style/MyEditTextTheme"
android:singleLine="true" />
प्रोग्रामेटिक रूप से, आप कोशिश कर सकते हैं:
editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
मुझे लगता है कि विषय द्वारा सबसे अच्छा तरीका है:
<style name="MyEditTextTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorControlNormal">@color/black</item>
<item name="colorControlActivated">@color/action_blue</item>
<item name="colorControlHighlight">@color/action_blue</item>
</style>
<style name="AddressBookStyle" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textSize">13sp</item>
<item name="android:theme">@style/MyEditTextTheme</item>
</style>
<android.support.v7.widget.AppCompatEditText
style="@style/AddressBookStyle"/>
Edittext के अंडरलाइन रंग को बदलने के लिए:
यदि आप चाहते हैं कि पूरा ऐप इस शैली को साझा करे, तो आप निम्नलिखित तरीके से कर सकते हैं।
(1) style.xml फ़ाइल पर जाएं। आपका AppTheme जो Theme.AppCompat.Light.DarkActionBar (मेरे मामले में) के माता-पिता को विरासत में मिला है, वे आपके ऐप में सभी शैली फ़ाइलों के आधार माता-पिता होंगे। इसका नाम बदलकर “AppBaseTheme” कर दें। इसके नीचे एक और स्टाइल बनाएं जिसमें AppTheme का नाम हो और जिसे आप द्वारा संपादित किए गए AppBaseTheme से विरासत में मिला हो। यह निम्नलिखित की तरह दिखेगा:
<!-- Base application theme. -->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<!--see http://www.google.com/design/spec/style/color.html#color-color-palette-->
<item name="colorPrimary">@color/material_brown_500</item>
<item name="colorPrimaryDark">@color/material_brown_700</item>
<item name="colorAccent">@color/flamingo</item>
<style name="AppTheme" parent="AppBaseTheme">
<!-- Customize your theme here. -->
</style>
फिर जो भी आप अपने EditText लाइन रंग होना चाहते हैं रंग को "colorAccent" बदलें।
(2) यदि आपके पास style.xml के साथ अन्य मान फ़ोल्डर हैं, तो यह चरण बहुत महत्वपूर्ण है। क्योंकि वह फ़ाइल आपके पिछले पैरेंट xml फ़ाइल से इनहेरिट होगी। उदाहरण के लिए, मेरे पास मान -19 / शैलियाँ हैं। xml। यह विशेष रूप से किटकैट और इसके बाद के संस्करण के लिए है। अपने माता-पिता को AppBaseTheme में बदलें और "colorAccent" से छुटकारा पाना सुनिश्चित करें ताकि यह माता-पिता के रंग को ओवरराइड न करे। इसके अलावा, आपको उन वस्तुओं को रखने की आवश्यकता है जो संस्करण 19 के लिए विशिष्ट हैं। तब यह इस तरह दिखेगा।
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
इसकी बहुत सरल (आवश्यक: न्यूनतम एपीआई 21) ...
कोडिंग रखें ........ :)
रेखा का रंग EditTextपृष्ठभूमि की संपत्ति से परिभाषित होता है। इसे बदलने के लिए आपको बदलना चाहिएandroid:background लेआउट फ़ाइल में ।
मुझे ध्यान देना चाहिए कि यह शैली 9-पैच ड्रॉबल का उपयोग करके प्राप्त की जाती है। यदि आप एसडीके में देखते हैं, तो आप देख सकते हैं कि EditTextइस छवि की पृष्ठभूमि है :

इसे बदलने के लिए आप इसे एक छवि हेरफेर कार्यक्रम में खोल सकते हैं और इसे वांछित रंग में रंग सकते हैं। के रूप में इसे सहेजें bg_edit_text.9.pngऔर फिर इसे आप को आकर्षित करने योग्य फ़ोल्डर में रखें। अब आप इसे अपनी EditTextपसंद के लिए एक पृष्ठभूमि के रूप में लागू कर सकते हैं :
android:background="@drawable/bg_edit_text"
आप इस कोड की लाइन का उपयोग करके EditText का रंग बदल सकते हैं:edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));
विगेट्स की पृष्ठभूमि एपीआई स्तर पर निर्भर है ।
वैकल्पिक १
आप अपनी EditTextपृष्ठभूमि को एक कस्टम छवि प्रदान कर सकते हैं
android:background="@drawable/custom_editText"
आपकी छवि कुछ इस तरह दिखनी चाहिए। यह आपको वांछित प्रभाव देगा।

वैकल्पिक 2
इस xml को अपनी EditTextपृष्ठभूमि विशेषता पर सेट करें ।
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#4C000000"/>
<corners android:bottomRightRadius="5dp"
android:bottomLeftRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp"/>
</shape>
यह आपके EditTextप्रत्येक API पर एक जैसा दिखेगा और महसूस करेगा ।
आप पृष्ठभूमि को टिन्टिंग के साथ रंग बदल सकते हैं
<EditText
android:backgroundTint="@color/red"/>
drawable / bg_edittext.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="@color/colorDivider" />
</shape>
</item>
</layer-list>
EditText पर सेट करें
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"/>
इस विधि का उपयोग करें .. और इसे उर व्यू नामों के अनुसार संशोधित करें। यह कोड बहुत अच्छा काम करता है।
private boolean validateMobilenumber() {
if (mobilenumber.getText().toString().trim().isEmpty() || mobilenumber.getText().toString().length() < 10) {
input_layout_mobilenumber.setErrorEnabled(true);
input_layout_mobilenumber.setError(getString(R.string.err_msg_mobilenumber));
// requestFocus(mobilenumber);
return false;
} else {
input_layout_mobilenumber.setError(null);
input_layout_mobilenumber.setErrorEnabled(false);
mobilenumber.setBackground(mobilenumber.getBackground().getConstantState().newDrawable());
}
यदि आप एक सपाट रेखा चाहते हैं, तो आप इसे आसानी से xml के साथ कर सकते हैं। यहाँ xml उदाहरण है:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="-1dp"
android:left="-1dp"
android:right="-1dp"
android:bottom="1dp"
>
<shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#6A9A3A"/>
</shape>
</item>
</layer-list>
यदि आप केंद्रित संपादन के लिए अलग चौड़ाई और रंग प्रदान करना चाहते हैं, तो आकार को एक चयनकर्ता से बदलें।
नेमस्पेस की विशेषता के AppCompatEditTextसाथ उपयोग करने के लिए सबसे अच्छा तरीका है । अर्थातbackgroundTintapp
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
app:backgroundTint="YOUR COLOR"
android:layout_height="wrap_content" />
जब हम उपयोग करते हैं तो android:backgroundTintयह केवल API21 या अधिक में काम करेगा, लेकिन app:backgroundTintआपके एप्लिकेशन द्वारा सभी API स्तरों पर काम करता है।
<EditText
android:id="@+id/et_password_tlay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:textColorHint="#9e9e9e"
android:backgroundTint="#000"
android:singleLine="true"
android:drawableTint="#FF4081"
android:paddingTop="25dp"
android:textColor="#000"
android:paddingBottom="5dp"
android:inputType="textPassword"/>
<View
android:id="@+id/UnderLine"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@+id/et_password_tlay"
android:layout_centerHorizontal="true"
android:background="#03f94e" />
** यह दृश्य के साथ कर रहा है **
निम्न तरीके से प्रयास करें, यह बैकग्राउंड प्रॉपर्टी के रूप में उपयोग किए जाने पर एडिटटेक्स्ट के निचले लाइन रंग को बदल देगा।
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="@dimen/spacing_neg"
android:right="@dimen/spacing_neg"
android:top="@dimen/spacing_neg">
<shape>
<solid android:color="@android:color/transparent" />
<stroke
android:width="@dimen/spacing_1"
android:color="@android:color/black" />
</shape>
</item>
</layer-list>