EditText में लाइन कलर कैसे बदलें


203

मैं अपने लेआउट xml फ़ाइल में एक EditText बना रहा हूं

लेकिन मैं Holo से EditText में (उदाहरण के लिए) लाल रंग की रंग रेखा बदलना चाहता हूं। यह कैसे किया जा सकता है?

यहां छवि विवरण दर्ज करें

जवाबों:


310

यह सबसे अच्छा उपकरण है जिसे आप सभी दृश्यों के लिए उपयोग कर सकते हैं और इसके फ्री @ Jérôme Van Der Linden के लिए बहुत धन्यवाद ।

एंड्रॉइड होलो कलर्स जेनरेटर आपको EditTextअपने एंड्रॉइड एप्लिकेशन के लिए अपने स्वयं के रंगों के साथ आसानी से एंड्रॉइड घटकों जैसे या स्पिनर बनाने की अनुमति देता है । यह सभी आवश्यक नौ पैच एसेट्स से जुड़े एक्सएमएल ड्रॉबल और स्टाइल उत्पन्न करेगा, जिन्हें आप सीधे अपने प्रोजेक्ट में कॉपी कर सकते हैं।

http://android-holo-colors.com/

अद्यतन १

यह डोमेन समाप्त हो गया लगता है, लेकिन यह परियोजना एक खुला स्रोत है जिसे आप यहां पा सकते हैं

https://github.com/jeromevdl/android-holo-colors

कोशिश करो

इस छवि को पृष्ठभूमि में रखा गया है 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" />

लिंक मर गया लगता है? क्या सॉफ्टवेयर अभी भी उपलब्ध है?
जॉन

1
@CodingJohn यह प्रोजेक्ट खुला है, आप यहाँ देख सकते हैं github.com/jeromevdl/android-holo-colors
MilapTank

और कौन कहता है कि हमें "ऐप का उपयोग करना है: एंड्रॉइड के बजाय बैकग्राउंड टिंट: बैकग्राउंड टिंट" ??
user924

यदि आप पिछड़े संगतता चाहते हैं तो आप ऐप का उपयोग कर सकते हैं: *** OW Android: ***
मिलापांक

202

मुझे पिछले उत्तर पसंद नहीं हैं। उपयोग करने के लिए सबसे अच्छा समाधान है:

<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" />

3
यह सबसे अच्छा उपाय है! सरल और सभी एपीआई स्तरों पर काम करता है। धन्यवाद!
इवो ​​स्टोयोनोव

7
आपको इसकी आवश्यकता नहीं है, यदि आप एप्कोम्पैट लाइब्रेरी का उपयोग करते हैं तो EdtiTexts स्वचालित रूप से AppCompatEditText में बदल दिया जाता है और पृष्ठभूमि टिंट लागू होता है।
स्टीफन के।

मुझे लगता है कि यह बिल्कुल समाधान होना चाहिए
थु गुयेन

आपका बहुत बहुत धन्यवाद। इसने एपीआई 16+ के लिए काम किया। सबसे अच्छा उपाय।
एंड्रे लुइज़ रीस

2
एप्लिकेशन सेट करना संभव है: पृष्ठभूमि प्रोग्राम के अनुसार? मुझे एक विधि 'setBackgroundTint' मिली
सारथ नागेश

75

आप 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" />

18
केवल एपीआई 21 या उच्चतर में काम करता है। कम एपीआई स्तर के लिए यह काम करने का कोई तरीका?
व्योको


@ mladj0ni Cool, + 1d
Vucko

3
क्रेडिट: "backgroundTint एंड्रॉयड" कम API स्तरों के लिए, केवल बजाय "backgroundTint" का उपयोग stackoverflow.com/a/29400711/1590911
Hasaan अली

यह पूरी पृष्ठभूमि के रंग को बदलता है, रेखा के रंग को नहीं
कोड विगेट

29

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" />

क्या आप जानते हैं कि शैली फ़ाइल में अल्फा / अपारदर्शिता कैसे जोड़ें? जैसे इसे सामान्य रंग को एक अस्पष्टता के साथ लेना चाहिए और एक बार जब वे टाइप करना शुरू करते हैं, तो इसे सक्रिय या हाइलाइट किए गए रंग को लेना चाहिए
ASN

1
@ इसके लिए आपको एक पाठ देखने वाले श्रोता को जोड़ने और "onTextChanged" विधि में अस्पष्टता को गतिशील रूप से सेट करने की आवश्यकता है
राहुल

ओह। तो इसे स्टाइल या चयनकर्ता फ़ाइल में नहीं जोड़ा जा सकता है और इसे गतिशील रूप से किया जाना चाहिए?
ASN

@ASN अपारदर्शिता को हेक्स रंग में जोड़ा गया है I प्रथम दो वर्ण 00-FF उदाहरण के लिए: # A1FAFAFA
लक्ष्य

21

प्रोग्रामेटिक रूप से, आप कोशिश कर सकते हैं:

editText.getBackground().mutate().setColorFilter(getResources().getColor(android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);

2
Xamarin.Forms प्रभाव के लिए सबसे अच्छा जवाब
mister_giga

11

मुझे लगता है कि विषय द्वारा सबसे अच्छा तरीका है:

<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"/>

2
यह मेरे लिए स्टाइल टैग के साथ नहीं, बल्कि एंड्रॉइड के साथ काम करता है: थीम टैग
इंसपिलियानो पियानो

9

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>

9

इसकी बहुत सरल (आवश्यक: न्यूनतम एपीआई 21) ...

  1. अपने xml पर जाएं और EditText फ़ील्ड चुनें
  2. दाईं ओर, आप 'गुण' विंडो देख सकते हैं। 'सभी गुण देखें' का चयन करें
  3. बस 'टिंट' की खोज करें
  4. और वांछित रंग हेक्स के लिए 'पृष्ठभूमि' को जोड़ें / बदलें (# FF0000 कहें)

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

कोडिंग रखें ........ :)


2
न्यूनतम एपीआई 21.
मैहन निजात

बैकग्राउंड टिंट बदलने से बैकग्राउंड बदल जाता है। यह उत्तर गलत है
कोड विगेट

6

रेखा का रंग EditTextपृष्ठभूमि की संपत्ति से परिभाषित होता है। इसे बदलने के लिए आपको बदलना चाहिएandroid:background लेआउट फ़ाइल में ।

मुझे ध्यान देना चाहिए कि यह शैली 9-पैच ड्रॉबल का उपयोग करके प्राप्त की जाती है। यदि आप एसडीके में देखते हैं, तो आप देख सकते हैं कि EditTextइस छवि की पृष्ठभूमि है :

textfield_activated_holo_light.9.png

इसे बदलने के लिए आप इसे एक छवि हेरफेर कार्यक्रम में खोल सकते हैं और इसे वांछित रंग में रंग सकते हैं। के रूप में इसे सहेजें bg_edit_text.9.pngऔर फिर इसे आप को आकर्षित करने योग्य फ़ोल्डर में रखें। अब आप इसे अपनी EditTextपसंद के लिए एक पृष्ठभूमि के रूप में लागू कर सकते हैं :

android:background="@drawable/bg_edit_text"


4

विगेट्स की पृष्ठभूमि एपीआई स्तर पर निर्भर है

वैकल्पिक १

आप अपनी 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 पर एक जैसा दिखेगा और महसूस करेगा ।


मैं संस्करण ४.० और इसके बाद के संस्करण में रुचि रखता हूं। यही है, मैं सिर्फ एडिटटेक्स्ट
एलेक्स

4

आप पृष्ठभूमि को टिन्टिंग के साथ रंग बदल सकते हैं <EditText android:backgroundTint="@color/red"/>


1
यह केवल api> 21 के लिए काम करता है आपको सभी एप के लिए @Rahul उत्तर का पालन करना चाहिए या api> 21 के लिए लेआउट -21 फ़ोल्डर में विभिन्न लेआउट जोड़ना चाहिए
aimiliano

4

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"/>

3

इस विधि का उपयोग करें .. और इसे उर व्यू नामों के अनुसार संशोधित करें। यह कोड बहुत अच्छा काम करता है।

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

2

यदि आप एक सपाट रेखा चाहते हैं, तो आप इसे आसानी से 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>

यदि आप केंद्रित संपादन के लिए अलग चौड़ाई और रंग प्रदान करना चाहते हैं, तो आकार को एक चयनकर्ता से बदलें।


1
सामग्री डिजाइन के साथ यह आयत बनाता है, नीचे की ओर व्यापक रेखा के साथ
फिलिप जाइमेक

2

नेमस्पेस की विशेषता के 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 स्तरों पर काम करता है।


1

Android का उपयोग करें: उस edittext के लिए पृष्ठभूमि की संपत्ति। अपनी ड्रॉ करने योग्य फ़ोल्डर छवि को पास करें। उदाहरण के लिए,

android:background="@drawable/abc.png"

1
 <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" />

** यह दृश्य के साथ कर रहा है **


1

निम्न तरीके से प्रयास करें, यह बैकग्राउंड प्रॉपर्टी के रूप में उपयोग किए जाने पर एडिटटेक्स्ट के निचले लाइन रंग को बदल देगा।

<?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>

0

यह केवल android:theme="@style/AppTheme.AppBarOverlayआपके editText के लिए विशेषता के रूप में इसे शामिल करके किया जा सकता है और इसे <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />आपकी शैलियों में जोड़ सकता है

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