Val*_*ran 4 android material-design android-textinputlayout material-components material-components-android
是否可以在com.google.android.material.textfield.TextInputEditText不为每个组件额外设置的情况下设置新组件的样式?
例如:
对于新的,TextInputLayout我可以通过以下方式全局设置样式:
<style name="Theme.MyTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
.
.
.
<item name="textInputStyle">@style/MyTextInputLayoutStyle</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我希望TextInputEditText有类似的方式,例如:
<item name="editTextStyle">@style/MyTextInputEditTextStyle</item>
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
这是一个类似的帖子,但仅适用于旧的设计支持组件。
将TextInputLayout覆盖editTextStyle使用属性materialThemeOverlay属性。
例如Widget.MaterialComponents.TextInputLayout.FilledBox具有这种默认样式:
<style name="Widget.MaterialComponents.TextInputLayout.FilledBox" parent="Base.Widget.MaterialComponents.TextInputLayout">
<item name="materialThemeOverlay">
@style/ThemeOverlay.MaterialComponents.TextInputEditText.FilledBox
</item>
....
</style>
<style name="ThemeOverlay.MaterialComponents.TextInputEditText.FilledBox">
<item name="editTextStyle">@style/Widget.MaterialComponents.TextInputEditText.FilledBox</item>
</style>
Run Code Online (Sandbox Code Playgroud)
要全局定义,您必须为TextInputLayout扩展材料主题之一定义样式。
然后你必须使用新的materialThemeOverlay属性。它允许您覆盖应用程序主题属性,您可以更改该editTextStyle属性。
就像是:
<style name="MyCustomOutlined" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="materialThemeOverlay">@style/MyThemeOverlayOutlined</item>
</style>
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以editTextStyle仅针对此组件样式更改(应用程序主题属性)。
<style name="MyThemeOverlayOutlined">
<item name="editTextStyle">@style/MyTextInputEditText_outlinedBox</item>
</style>
<style name="MyTextInputEditText_outlinedBox" parent="@style/Widget.MaterialComponents.TextInputEditText.OutlinedBox">
<item name="android:paddingTop">8dp</item>
<item name="android:paddingBottom">8dp</item>
....
</style>
Run Code Online (Sandbox Code Playgroud)
最后,您可以将 分配给布局中MyCustomOutlined的特定对象 TextInputLayout:
<com.google.android.material.textfield.TextInputLayout
style="@style/MyCustomOutlined"
.../>
Run Code Online (Sandbox Code Playgroud)
或使用以下方法在您的应用主题中全局分配:
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
....
<item name="textInputStyle">@style/MyCustomOutlined</item>
</style>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2577 次 |
| 最近记录: |