टेक्स्ट प्रॉपर्टी के नीचे EditText को रेखांकित करें


108

मैं संपादित पाठ के नीचे नीला रंग बदलना चाहूंगा, मुझे नहीं पता कि यह क्या संपत्ति है।

मैंने इसके लिए एक अलग पृष्ठभूमि रंग का उपयोग करने की कोशिश की, लेकिन यह काम नहीं किया।

मैंने नीचे एक छवि संलग्न की है:

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


यह एडिटटेक्स्ट के लिए एक पृष्ठभूमि है जो कुछ एपीआई स्तर / फोन पर उपलब्ध है। दूसरे शब्दों में, यदि आपका ऐप एक अलग फोन पर चलता है, तो आप एक अलग पृष्ठभूमि देख सकते हैं।
शेरिफ इल्हातिब

आप कस्टम edittext पृष्ठभूमि बनाएँ
विजुंग

1
पिछले धागे की संभावित दोहराव। कृपया इसे बाहर की जाँच करें stackoverflow.com/a/4585750/1129468
gokhanakkurt

नीचे दिए गए कोड ऑफ कोड का उपयोग करें और मुझे बताएं कि यह काम कर रहा है या नहीं।
मासूमकिलर

जवाबों:


90

यह एक EditText प्रोग्रामेटिक रूप से (कोड की सिर्फ एक लाइन) के अंडरलाइन रंग को सेट करने के लिए वास्तव में काफी आसान है।

रंग सेट करने के लिए:

editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);

रंग हटाने के लिए:

editText.getBackground().clearColorFilter();

नोट: जब EditText पर ध्यान केंद्रित किया गया है, तो आपके द्वारा निर्धारित रंग प्रभावी नहीं होगा, इसके बजाय, इसका फोकस रंग है।

एपीआई संदर्भ:

Drawable # setColorFilter

Drawable # clearColorFilter


4
एंड्रॉइड के लिए ज़ामरीन पर भी काम करता है, आपके कस्टम रेंडरर ऑनएक्लेमेंट में, आप कर सकते हैंControl.Background.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.SrcIn);
डेविड कॉंल्किस

@DavidConlisk जो Rendererआप ओवरराइड करते हैं? मैं यह पता लगाने की कोशिश कर रहा हूं कि खोज बार के लिए यह काम कैसे किया जाए।
निक एन।

@NickN। मैं एक पिकर के लिए इसका उपयोग कर रहा था, इसलिए मैं पिकररेंडर को ओवररोड करता हूं। यह जो भी रेंडरर आपको सबसे अच्छा लगता है, उसके साथ काम करना चाहिए (सिद्धांत रूप में!)
डेविड कॉन्सिलिक

1
मुझे लगता है कि यह होना चाहिए, लेकिन समस्या यह हो सकती है कि SearchBarRendererप्रकार का नहीं है EditText। यह काम करने के लिए नहीं मिल सकता है।
निक एन।

85

android:backgroundTint=""अपने EditTextxml लेआउट में उपयोग करें ।

Api <21 के लिए आप AppCompatEditTextतब समर्थन लाइब्रेरी से उपयोग कर सकते हैंapp:backgroundTint=""


14
यह केवल वर्तमान में एपीआई 21 और इसके बाद के संस्करण में काम करता है। कोई बैकवर्ड सपोर्ट नहीं।
जॉन शेली

2
यह अब तक का सबसे सरल और सबसे संक्षिप्त समाधान है।
इगोरगानापोलस्की

@ जॉनसनले मेरा जवाब नीचे देखें , यह प्री-लॉलीपॉप और अप के लिए काम करता है।
सूफियान

3
android:background="@null"एपीआई <21 के साथ उपकरणों के लिए।
हम्माद नासिर

4
21 से नीचे एपीआई में इस विशेषता को काम करने के लिए आपको एंड्रॉइड के बजाय ऐप (xmlns: app = " schemas.android.com/apk/res-auto" ) नाम स्थान का उपयोग करना चाहिए ।
आंद्रेई के।

38

आपको EditText(ध्यान केंद्रित, सक्षम, सक्रिय) के प्रत्येक राज्य के लिए एक अलग पृष्ठभूमि छवि का उपयोग करना होगा, रंग नहीं ।

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

उपरोक्त साइट में, आप होलो थीम में बहुत सारे घटकों से चित्र प्राप्त कर सकते हैं। बस "EditText" और इच्छित रंग चुनें। आप पृष्ठ के नीचे एक पूर्वावलोकन देख सकते हैं।

.Zip फ़ाइल डाउनलोड करें, और अपनी परियोजना में संसाधनों को कॉपी करें (चित्र और XML)।

अगर आपका XML नाम है: apptheme_edit_text_holo_light.xml (या कुछ इसी तरह):

  1. अपने XML "style.xml" पर जाएं और कस्टम EditTextशैली जोड़ें :

    <style name="EditTextCustomHolo" parent="android:Widget.EditText">
       <item name="android:background">@drawable/apptheme_edit_text_holo_light</item>
       <item name="android:textColor">#ffffff</item>
    </style>
  2. बस अपने में यह करो EditText:

    <EditText
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       style="@style/EditTextCustomHolo"/>

और यह बात है, मुझे आशा है कि यह आपकी मदद करेगा।


24

यह एंड्रॉइड के पुराने और नए संस्करण के लिए ठीक काम करता है (एपीआई 10 पर भी ठीक काम करता है!)।

इस शैली को अपने में परिभाषित करें styles.xml:

<style name="EditText.Login" parent="Widget.AppCompat.EditText">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textColorHint">@android:color/darker_gray</item>
    <item name="colorAccent">@color/blue</item>
    <item name="colorControlNormal">@color/blue</item>
    <item name="colorControlActivated">@color/blue</item>
</style>

और अब अपने XML में, इसे थीम और स्टाइल ( सेट करने के लिए शैलीtextColor , और अन्य सभी चीजों को सेट करने के लिए थीम) के रूप में सेट करें:

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    style="@style/EditText.Login"
    android:theme="@style/EditText.Login"/>

संपादित करें

यह समाधान नए Android संस्करणों (लॉलीपॉप या मार्शमैलो पर) पर एक छोटे यूआई गड़बड़ का कारण बनता है कि चयन हैंडल को रेखांकित किया गया है।

इस धागे में इस मुद्दे पर चर्चा की गई है । (मैंने व्यक्तिगत रूप से इस समाधान की कोशिश नहीं की है)


शानदार जवाब धन्यवाद। माता-पिता = "Widget.AppCompat.EditText" का उपयोग करके, माता-पिता के बजाय = "android: Widget.EditText" ने मेरे प्रमुख मुद्दे को हल किया।
cfl

1
मुझे लगता है कि इसका मतलब है कि यह लॉलीपॉप (21) और काम करता है क्योंकि मुझे चेतावनी मिल रही है कि यह 21 से कम नहीं है
मार्क

@ MarkO'Sullivan नहीं, यह प्री-लॉलीपॉप और सभी तरह से काम करता है। मैंने इसे एपीआई 10 पर परीक्षण किया है, और यह ठीक काम करता है। कृपया पूरी त्रुटि और वह स्थान जहाँ वह दिखाता है पेस्ट करें।
सूफियान

फोकस्ड एडिट टेक्स्ट में अभी भी मेरे लिए कलर प्राइमरी कलर था, इसलिए मुझे इस अप्रोच का उपयोग करना पड़ा: stackoverflow.com/a/36543554/2413303
EpicPandaForce

18

आप बदल सकते हैं रेखांकन के EditText रंग में निर्दिष्ट किए styles.xml । अपने ऐप थीम में। Xml निम्नलिखित जोड़ें।

<item name="android:textColorSecondary">@color/primary_text_color</item> 

जैसा कि टिप्पणी अनुभाग में एना द्वारा बताया गया है

  <item name="android:colorControlActivated">@color/black</item>

इसे थीम स्टाइल में सेट करना एडिटेक्स अंडरलाइन के रंग बदलने के लिए अच्छी तरह से काम करता है।


3
ध्यान दें कि एक्शनबार में android:textColorSecondaryबैक एरो और DrawerLayoutहैमबर्गर आइकन का रंग निर्धारित करने के लिए भी उपयोग किया जाता है।
बियांका डेनिक्यूक

7
मैंने <item name="colorControlNormal">@color/edittext_underline_color</item>नेविगेशन बार रंग समस्या के कारण textColorSecondary के बजाय उपयोग करना समाप्त कर दिया है ।
बियंका डैनिक्यूक

14

तो, आपको अपने ड्रा करने योग्य फ़ोल्डर में एक नई .xml फ़ाइल बनाने की आवश्यकता है।

उस फ़ाइल में यह कोड पेस्ट करें:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item
    android:bottom="8dp"
    android:left="-3dp"
    android:right="-3dp"
    android:top="-3dp">
    <shape android:shape="rectangle">
     <stroke
       android:width="1dp"
       android:color="@color/white"/>
     </shape>
   </item>
</layer-list>

और अपने EditText में, सेट करें

android:background="@drawable/your_drawable"

आप अपने ड्रा करने योग्य xml, सेट कोनों, गद्दी, आदि के साथ खेल सकते हैं।


1
यह शायद बेहतर समाधान दिया गया है कि यह किसी शैली या लेआउट में अन्य घटकों को प्रभावित किए बिना, EditText के पूर्ण अनुकूलन की अनुमति देता है
mutable2112

मुझे क्या समझ में आया, आप एडिटटेक्स्ट की पृष्ठभूमि को सफेद में सेट कर सकते हैं
rmanalo

मेरे द्वारा खोजे गए सभी समाधानों के माध्यम से, यह केवल मेरे लिए एंड्रॉइड मटेरियल घटकों का उपयोग करने वाला काम था।
बार्नी.बालाज़्स

9

अपने अनुप्रयोग शैली में संपत्ति को परिभाषित colorAccent । यहां आपको एक उदाहरण मिलता है

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/action_bar</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/action_bar</item>
</style>

5

आप इस कोड को आसानी से कोड का उपयोग करके प्रोग्रामटेक्स्ट का रंग बदल सकते हैं:

edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));


1
एक आकर्षण की तरह काम करता है: डी
तस्लीम ओसेनी

1

एडिट-टेक्स्ट के बॉर्डर का बैकग्राउंड कलर बदलने के लिए नीचे दिए गए कोड का उपयोग करें।

ड्रा करने योग्य के तहत नई XML फ़ाइल बनाएँ।

abc.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#00000000" />
    <stroke android:width="1dip" android:color="#ffffff" />
</shape>

और इसे अपने संपादन-पाठ की पृष्ठभूमि के रूप में जोड़ें

android:background="@drawable/abc"

मैंने उल्लेख किया है कि मैंने ऊपर एक पृष्ठभूमि रंग सेट करने की कोशिश की थी। यह काम नहीं किया।
एंड्रॉइड एंथिरिस

1

नीचे की रेखा के रंग को बदलने के लिए, आप इसे अपने ऐप थीम में उपयोग कर सकते हैं:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="colorControlNormal">#c5c5c5</item>
    <item name="colorControlActivated">#ffe100</item>
    <item name="colorControlHighlight">#ffe100</item>
</style>

निम्नलिखित थीम के अनुसार फ्लोटिंग लेबल रंग बदलने के लिए:

<style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">#4ffd04[![enter image description here][1]][1]</item>
</style>

और अपने लेआउट में इस विषय का उपयोग करें:

 <android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">

    <EditText
        android:id="@+id/edtTxtFirstName_CompleteProfileOneActivity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:capitalize="characters"
        android:hint="User Name"
        android:imeOptions="actionNext"
        android:inputType="text"
        android:singleLine="true"
        android:textColor="@android:color/white" />

</android.support.design.widget.TextInputLayout>

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


फोकस्ड एडिट टेक्स्ट में अभी भी मेरे लिए कलर प्राइमरी कलर था, इसलिए मुझे इस अप्रोच का इस्तेमाल करना पड़ा: stackoverflow.com/a/36543554/2413303
EpicPandaForce

1

आप इसे AppCompatEditText और रंग चयनकर्ता के साथ कर सकते हैं:

            <androidx.appcompat.widget.AppCompatEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:backgroundTint="@color/selector_edittext_underline" />

selector_edittext_underline.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/focused_color" 
          android:state_focused="true" />
    <item android:color="@color/hint_color" />
</selector>

0

यदि आपको API <21 के साथ उपकरणों का समर्थन नहीं करना है, तो उदाहरण के लिए xml में बैकग्राउंडहिंट का उपयोग करें:

 <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:hint="Task Name"
            android:ems="10"
            android:id="@+id/task_name"
            android:layout_marginBottom="15dp"
            android:textAlignment="center"
            android:textColor="@android:color/white"

            android:textColorLink="@color/blue"
            android:textColorHint="@color/blue"
            android:backgroundTint="@color/lighter_blue" />

बेहतर समर्थन और कमियों के लिए @Akariuz समाधान का उपयोग करें। बैकग्राउंडहिंट सबसे दर्द रहित समाधान है, लेकिन पिछड़े संगत नहीं, आपकी आवश्यकताओं के आधार पर कॉल करते हैं।


0

अपने colorAccentरंग को सेट करें colorAccentऔर उस रंग को सेट करें जिसे आप चलाते हैं और आपको आउटपुट मिलता है


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