मैं एंड्रॉइड डिज़ाइन लाइब्रेरी का उपयोग कर रहा हूं TextinputLayout
। लेकिन संकेत रंग, लेबल रंग और EditText
अंदर के रंग को अनुकूलित नहीं कर सका TextinputLayout
। कृपया मदद कीजिए।
मैं एंड्रॉइड डिज़ाइन लाइब्रेरी का उपयोग कर रहा हूं TextinputLayout
। लेकिन संकेत रंग, लेबल रंग और EditText
अंदर के रंग को अनुकूलित नहीं कर सका TextinputLayout
। कृपया मदद कीजिए।
जवाबों:
<item name="colorControlNormal">#c5c5c5</item>
<item name="colorControlActivated">@color/accent</item>
<item name="colorControlHighlight">@color/accent</item>
अधिक जानकारी के लिए इस धागे की जाँच करें ।
<style name="MyHintStyle" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/main_color</item>
</style>
और इसे इस तरह उपयोग करें:
<android.support.design.widget.TextInputLayout
...
app:hintTextAppearance="@style/MyHintStyle">
<android.support.design.widget.TextInputLayout
...
app:hintTextAppearance="@style/MyHintStyle"
android:textColorHint="#c1c2c4">
@AlbAtNf को धन्यवाद
android:textColorHint
किया TextInputLayout
गया।
फेडर कज़कोव और अन्य उत्तरों के आधार पर , मैंने एक डिफ़ॉल्ट कॉन्फिगर बनाया।
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="Widget.Design.TextInputLayout" parent="AppTheme">
<item name="hintTextAppearance">@style/AppTheme.TextFloatLabelAppearance</item>
<item name="errorTextAppearance">@style/AppTheme.TextErrorAppearance</item>
<item name="counterTextAppearance">@style/TextAppearance.Design.Counter</item>
<item name="counterOverflowTextAppearance">@style/TextAppearance.Design.Counter.Overflow</item>
</style>
<style name="AppTheme.TextFloatLabelAppearance" parent="TextAppearance.Design.Hint">
<!-- Floating label appearance here -->
<item name="android:textColor">@color/colorAccent</item>
<item name="android:textSize">20sp</item>
</style>
<style name="AppTheme.TextErrorAppearance" parent="TextAppearance.Design.Error">
<!-- Error message appearance here -->
<item name="android:textColor">#ff0000</item>
<item name="android:textSize">20sp</item>
</style>
</resources>
activity_layout.xml
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Text hint here"
android:text="5,2" />
</android.support.design.widget.TextInputLayout>
ध्यान केंद्रित:
बिना फोकस:
त्रुटि संदेश:
साथ सामग्री घटक पुस्तकालय आप उपयोग कर सकते हैं com.google.android.material.textfield.TextInputLayout
।
आप रंग बदलने के लिए एक कस्टम शैली लागू कर सकते हैं।
संकेत रंग बदलने के लिए आपको इन विशेषताओं का उपयोग करना होगा:
hintTextColor
और android:textColorHint
।
<style name="Custom_textinputlayout_filledbox" parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
<!-- The color of the label when it is collapsed and the text field is active -->
<item name="hintTextColor">?attr/colorPrimary</item>
<!-- The color of the label in all other text field states (such as resting and disabled) -->
<item name="android:textColorHint">@color/selector_hint_text_color</item>
</style>
आप के लिए एक चयनकर्ता का उपयोग करना चाहिए android:textColorHint
। कुछ इस तरह:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
<item android:alpha="0.6" android:color="?attr/colorOnSurface"/>
</selector>
नीचे की रेखा के रंग को बदलने के लिए आपको विशेषता का उपयोग करना होगा boxStrokeColor
:।
<style name="Custom_textinputlayout_filledbox" parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
....
<item name="boxStrokeColor">@color/selector_stroke_color</item>
</style>
इस मामले में भी आपको एक चयनकर्ता का उपयोग करना चाहिए। कुछ इस तरह:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorPrimary" android:state_focused="true"/>
<item android:alpha="0.87" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
<item android:alpha="0.12" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
<item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
</selector>
आप इन विशेषताओं को अपने लेआउट में भी लागू कर सकते हैं:
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
app:boxStrokeColor="@color/selector_stroke_color"
app:hintTextColor="?attr/colorPrimary"
android:textColorHint="@color/selector_hint_text_color"
...>
boxStrokeColor
। selector_stroke_color
विशेष रूप से अंतिम पंक्ति में उदाहरण में:<item android:alpha="0.38" android:color="?attr/colorOnSurface"/>
इस विशेषता को Edittext टैग में जोड़ें और आनंद लें:
android:backgroundTint="@color/colorWhite"
इस ब्लॉग पोस्ट के द्वारा EditText
और AutoCompleteTextView
लिपटे के विभिन्न स्टाइलिंग पहलुओं का वर्णन किया गया है TextInputLayout
।
For EditText
and AppCompat lib 22.1.0+ आप कुछ थीम से संबंधित सेटिंग्स के साथ थीम विशेषता सेट कर सकते हैं:
<style name="StyledTilEditTextTheme">
<item name="android:imeOptions">actionNext</item>
<item name="android:singleLine">true</item>
<item name="colorControlNormal">@color/greyLight</item>
<item name="colorControlActivated">@color/blue</item>
<item name="android:textColorPrimary">@color/blue</item>
<item name="android:textSize">@dimen/styledtil_edit_text_size</item>
</style>
<style name="StyledTilEditText">
<item name="android:theme">@style/StyledTilEditTextTheme</item>
<item name="android:paddingTop">4dp</item>
</style>
और उन्हें लागू करें EditText
:
<EditText
android:id="@+id/etEditText"
style="@style/StyledTilEditText"
के लिए AutoCompleteTextView
चीजें अधिक में यह लपेटकर क्योंकि जटिल हो जाते हैं TextInputLayout
और इस विषय चल लेबल व्यवहार टूट जाता है को लागू करने। आपको इसे कोड में ठीक करना होगा:
private void setStyleForTextForAutoComplete(int color) {
Drawable wrappedDrawable = DrawableCompat.wrap(autoCompleteTextView.getBackground());
DrawableCompat.setTint(wrappedDrawable, color);
autoCompleteTextView.setBackgroundDrawable(wrappedDrawable);
}
और इसमें Activity.onCreate
:
setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight));
autoCompleteTextView.setOnFocusChangeListener((v, hasFocus) -> {
if(hasFocus) {
setStyleForTextForAutoComplete(getResources().getColor(R.color.blue));
} else {
if(autoCompleteTextView.getText().length() == 0) {
setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight));
}
}
});
आप बदलना चाहते हैं बार / रेखा का रंग और संकेत पाठ रंग का TextInputLayout
(क्या उच्चारण रंग सामान्य रूप से है), तो सिर्फ इस शैली बनाने:
<style name="MyStyle">
<item name="colorAccent">@color/your_color</item>
</style>
फिर इसे अपने विषय केTextInputLayout
रूप में लागू करें :
<android.support.design.widget.TextInputLayout
...
app:theme="@style/MyStyle" />
यह मूल रूप से एक विषय (शैली नहीं) को एक दृश्य (पूरी गतिविधि के विपरीत) निर्धारित करता है ।
<style name="Widget.Design.TextInputLayout" parent="android:Widget">
<item name="hintTextAppearance">@style/TextAppearance.Design.Hint</item>
<item name="errorTextAppearance">@style/TextAppearance.Design.Error</item>
</style>
आप लेआउट के लिए इस शैली को ओवरराइड कर सकते हैं
और आप आंतरिक EditText- आइटम शैली को भी बदल सकते हैं।
<style name="EditScreenTextInputLayoutStyle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorControlNormal">@color/actionBar_background</item>
<item name="colorControlActivated">@color/actionBar_background</item>
<item name="colorControlHighlight">@color/actionBar_background</item>
<item name="colorAccent">@color/actionBar_background</item>
<item name="android:textColorHint">@color/actionBar_background</item>
</style>
इस शैली को TextInputLayout पर लागू करें
android:theme="@style/EditScreenTextInputLayoutStyle"
A TextinputLayout
, एक दृश्य नहीं है, बल्कि एक है Layout
, जैसा कि दिमित्रीस त्सोगोरिस ने अपने ब्लॉग पोस्ट में यहां बताया है । इसलिए, आपको एक की आवश्यकता नहीं है Style
, जो Views
केवल के लिए है, लेकिन एक का उपयोग करें Theme
। ब्लॉग पोस्ट के बाद, मैं निम्नलिखित समाधान के साथ समाप्त हुआ:
अपने styles.xml
साथ शुरू करो
<style name="TextInputLayoutAppearance" parent="Widget.Design.TextInputLayout">
<!-- reference our hint & error styles -->
<item name="android:textColor">@color/your_colour_here</item>
<item name="android:textColorHint">@color/your_colour_here</item>
<item name="colorControlNormal">@color/your_colour_here</item>
<item name="colorControlActivated">@color/your_colour_here</item>
<item name="colorControlHighlight">@color/your_colour_here</item>
</style>
और अपने लेआउट में जोड़ें
<com.google.android.material.textfield.TextInputLayout
android:theme="@style/TextInputLayoutAppearance"
...