如何将全局自定义样式应用于android.support.design.widget.TextInputEditText? [英] How to apply global custom style to android.support.design.widget.TextInputEditText?
问题描述
我在style.xml
中定义了AppTheme
,在其中我为所有应用程序的TextView
,EditText
,Button
等全局应用自定义样式.
I have my AppTheme
defined in style.xml
where I apply a custom style globally for all my app's TextView
, EditText
, Button
etc.
现在我想对android.support.design.widget.TextInputEditText
做同样的事情,但是怎么做?
Now I'd like to do the same for android.support.design.widget.TextInputEditText
but how?
它不会扩展EditText
,因此样式将被忽略.
It does not extend EditText
so that style is ignored.
这就是我所拥有的:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary</item>
<item name="colorAccent">@color/accent</item>
<!-- Globally override default widget styles with custom -->
<item name="android:textViewStyle">@style/App.TextView</item>
<item name="android:editTextStyle">@style/App.EditText</item>
<item name="android:buttonStyle">@style/App.Button.Primary</item>
</style>
<style name="App.TextView" parent="@android:style/Widget.TextView">
<item name="android:textColor">@color/text</item>
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textSize">@dimen/textsize_normal</item>
</style>
<style name="App.EditText" parent="@android:style/Widget.EditText">
<item name="android:textColor">#f00</item>
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textSize">@dimen/textsize_xxxlarge</item>
<item name="android:textStyle">bold</item>
<item name="android:textColorHint">@color/text_hint</item>
</style>
<style name="App.Button" parent="@android:style/Widget.Button">
<item name="android:textSize">@dimen/button_text_size</item>
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textAllCaps">false</item>
</style>
<style name="App.Button.Primary">
<item name="android:background">@drawable/button_primary_background</item>
<item name="android:height">@dimen/button_primary_height</item>
<item name="android:width">@dimen/button_primary_width</item>
<item name="android:paddingLeft">@dimen/padding_normal</item>
<item name="android:paddingRight">@dimen/padding_normal</item>
<item name="android:textColor">@color/button_primary_text</item>
</style>
...
推荐答案
使用Material主题,您可以使用 textInputStyle
设置 com.google.android.material.textfield.TextInputLayout
组件的样式.
With the Material theme you can use the textInputStyle
to style the com.google.android.material.textfield.TextInputLayout
component.
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
....
<item name="textInputStyle">@style/MyTextInputLayoutStyle</item>
</style>
<style name=MyTextInputLayoutStyle" parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
....
</style>
如果您想自定义 TextInputEditText
,只需添加:
If you would like to customize the TextInputEditText
just add:
<style name=MyTextInputLayoutStyle" parent="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
....
<item name="materialThemeOverlay">
@style/MyThemeOverlayTextInputEditTextFilledBox</item>
</style>
<style name="MyThemeOverlayTextInputEditTextFilledBox">
<item name="editTextStyle">@style/MyTextInputEditText</item>
</style>
例如:
<style name="MyTextInputEditText" parent="@style/Widget.MaterialComponents.TextInputEditText.FilledBox">
<item name="android:paddingTop">8dp</item>
<item name="android:paddingBottom">8dp</item>
<item name="android:textAppearance">myTextAppearance</item>
...
</style>
这篇关于如何将全局自定义样式应用于android.support.design.widget.TextInputEditText?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!