सभी EditText (उदाहरण के लिए) के लिए एक सुसंगत शैली सेट करें


84

मैं EditTextअपने आवेदन में सभी को एक सुसंगत रूप देने की कोशिश कर रहा हूं । मुझे पता है कि मैं ऐसा कुछ कर सकता हूं:

<style name="App_EditTextStyle">
    <item name="android:background">@drawable/filled_roundededges_box_dark</item>
    <item name="android:textColor">#808080</item>
    <item name="android:layout_height">45dip</item>
</style>

फिर मैं ऐसा करके एक विशेष EditTextशैली बना सकता हूं :

<EditText ...
    style="@style/App_EditTextStyle
    ...>

लेकिन इस तरह से मुझे EditTextअपने आवेदन में हर एक के लिए व्यक्तिगत रूप से शैली सेट करना याद रखना होगा जो कि थकाऊ है, अगर त्रुटि नहीं होती है।

क्या कोई ऐसा तरीका है जिससे मैं इसे एक विषय या कुछ का हिस्सा बना सकता हूं? ऐसा इसलिए है कि मुझे इस शैली को हर से जोड़ना नहीं है EditText। कुछ इस तरह काल्पनिक कोड ब्लॉक:

<style name="App_Theme" parent="@android:style/Theme.Holo">
   ... 
   <item name="android:EditTextSyle">@style/App_EditTextStyle</item>
   ...
<style>

और फिर मेरे मन AndroidManifest.xmlमें कुछ इस तरह है:

<application
    ....
    android:theme="@style/App_Theme">

और वोइला! मेरे सभी EditTextउदाहरण के बिना शैली निर्दिष्ट करने के लिए मेरे पास लगातार शैली है।

जवाबों:


155

अपने कस्टम विषय में EditTextशैली (नाम editTextStyle:)) की ओर इशारा करते हुए विशेषता को ओवरराइड करें :

<style name="App_Theme" parent="@android:style/Theme.Holo">
   <item name="android:editTextStyle">@style/App_EditTextStyle</item>
</style>

और विस्तार करने के लिए अपनी कस्टम शैली बनाएं Widget.EditText:

<style name="App_EditTextStyle" parent="@android:style/Widget.EditText">
    <item name="android:background">@drawable/filled_roundededges_box_dark</item>
    <item name="android:textColor">#808080</item>
    <item name="android:layout_height">45dip</item>
</style>

संपादित करें:

यदि आप बहुत नए AppCompat संबंधित विषयों का उपयोग कर रहे हैं, तो Android प्रीफ़िक्स के बिना EditTextStyle विशेषता का उपयोग करें:

<style name="App_Theme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="editTextStyle">@style/App_EditTextStyle</item>
</style>

3
यह बहुत प्रशंसनीय और तार्किक लगता है, फिर भी यह मेरे लिए काम नहीं करता है। क्या मुझे कुछ याद आ रहा है?
— कोड कवि

1
@ManishGupta वास्तव में कैसे काम नहीं करता है? मैंने ऊपर की शैलियों का परीक्षण किया है और वे काम करते हैं, लेकिन layout_height/heightउसमें नहीं डाला जा सकता क्योंकि एंड्रॉइड शायद उन विशेषताओं के लिए थीम की शैलियों से पहले जांच करता है और यह उनके लापता होने की शिकायत करेगा। लेकिन ऊपर के साथ एक कस्टम ड्रॉएबल + अलग-अलग टेक्स्ट कलर का काम।
— उपयोगकर्ता

मेरे पास ऐसी चीजें हैं जो आपके द्वारा बताई गई हैं। मुझे फटकार लगाने का कोई मतलब नहीं है। मैं आपको वैसे भी दे रहा हूं। मुझे कहीं कुछ याद आ रहा है। आप जो लिखते हैं वह ठंडा तर्क है और काम करना चाहिए। मैं इसे ठंडा करने के बाद फिर से दिखाऊंगा। धन्यवाद।
— कोड कवि

3
@ toobsco42 edittextStyleएक AutoCompleTextView(हालांकि यह है EditText) पर लागू नहीं होता है । autoCompleteTextViewStyleTheme.xml में विशेषता पर एक नज़र डालें जो Widget.AutoCompleTextViewstyle.xml फ़ाइल में एक शैली को इंगित करता है।
— उपयोगकर्ता

3
मेरे लिए भी काम नहीं करता है। लेकिन अगर मैं बदल <item name="android:editTextStyle">करने के लिए <item name="editTextStyle">, यह ठीक। धन्यवाद!
— सैम एसपी

52

@Luksprog उत्तर सही है लेकिन मेरे लिए काम नहीं कर रहा है। कुछ प्रयोग के बाद, मुझे पता चला कि editTextStyle से एंड्रॉइड नेमस्पेस को हटाने से यह मेरे लिए काम कर रहा है।

<style name="App_Theme" parent="@android:style/Theme.Holo">
   <item name="editTextStyle">@style/App_EditTextStyle</item>
</style>

और Widget.EditTextAppCompat विषय का उपयोग करने के लिए या अगर अपने कस्टम शैली बनाने के लिए Widget.AppCompat.EditText:

<style name="App_EditTextStyle" parent="@android:style/Widget.EditText">
    <item name="android:background">@drawable/filled_roundededges_box_dark</item>
    <item name="android:textColor">#808080</item>
    <item name="android:layout_height">45dip</item>
</style>

1
मेरे लिए भी काम करता है। लेकिन यह ऐसा व्यवहार क्यों करता है?
— ईगल_ईए

3
AppCompatपुस्तकालय के साथ कुछ करना पड़ सकता है । क्या आपकी गतिविधि का विस्तार होता है AppCompatActivity? ओह, Android विकास के रहस्य।
— मैट ज़ुकोवस्की

1
@MattZukowski ने आपकी टिप्पणी के आधार पर कुछ खुदाई की - संभावित अपराधी: AppCompat v7:21+बाद में शैलियों में "एंड्रॉइड:" उपसर्ग के बिना मानक थीम विशेषताओं का उपयोग करने की आवश्यकता है।
— iflp

इसके लिए धन्यवाद।
— एडम वराहिजी

Widget.AppCompat.EditText का उपयोग किए बिना भी ठीक काम करता है .. लेकिन मैं Widget.AppCompat.EditText का उपयोग नहीं कर सकता। कहते हैं "प्रतीक का समाधान नहीं कर सकता '@android: style / Widget.AppCompat.EditText'
— Neri

18

सबसे पहले, अपने EditText के लिए शैली को परिभाषित करें। सुनिश्चित करें कि मूल शैली हैandroid:Widget.EditText

<style name="CustomEditTextStyle" parent="android:Widget.EditText">

    <item name="android:textColor">#0F0F0F</item>
    <!-- ... More items here if needed ... -->
</style>

उसके बाद, android:editTextStyleअपने कस्टम थीम में विशेषता को ओवरराइड करें । जागरूक रहें, यदि आप समर्थन पुस्तकालय का उपयोग कर रहे हैं, तो आपको विशेषता editTextStyle(एंड्रॉइड नेमस्पेस के बिना) को ओवरराइड करने की भी आवश्यकता होगी ।

<style name="App_Theme" parent="...">
   <item name="android:editTextStyle">@style/CustomEditTextStyle</item>
   <item name="editTextStyle">@style/CustomEditTextStyle</item> <!-- For compatibility with the support library -->
</style>

1

यदि आपको बस कुछ सरल पैरामीटर सेट करने की आवश्यकता है, जैसे कि टेक्स्ट का रंग, एंड्रॉइड नेमस्पेस में कुछ पैरामीटर हैं जो ऐसा करेंगे जो एडिट टेक्स्ट के लिए एक अलग शैली घोषित करने की आवश्यकता के बिना होगा। उदाहरण के लिए

<style name="MyStyle" parent="android:Theme.Material.NoActionBar">
    <item name="colorPrimary">@color/black</item>
    <item name="colorPrimaryDark">@color/white</item>
    <item name="colorAccent">@color/white</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:editTextColor">@color/black</item>
    <item name="android:editTextBackground">@color/black</item>
    ....
</style>

AppCompat के नए संस्करण के लिए उपयोग करें editTextColorऔर निकालें android:।
— Armin

-2
<style name="App_Theme" parent="@android:style/Theme.Holo">    
    <item name="android:editTextBackground">@drawable/filled_roundededges_box_dark</item>
</style>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.