Вы должны определить стиль для TextInputLayout
, расширяющего одну из тем материала .
Затем вы должны использовать новый атрибут materialThemeOverlay
,Он позволяет переопределять атрибуты темы приложения, чтобы по-разному стилизовать отдельные компоненты, не изменяя глобального поведения.
Что-то вроде:
<style name="MyCustomOutlined" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<item name="materialThemeOverlay">@style/MyThemeOverlayOutlined</item>
</style>
Таким образом, вы можете изменить 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>
Наконец, вы можете присвоить MyCustomOutlined
конкретному TextInputLayout
в макете:
<com.google.android.material.textfield.TextInputLayout
style="@style/MyCustomOutlined"
.../>
или назначьте глобально в теме вашего приложения, используя:
<style name="AppTheme" parent="Theme.MaterialComponents.Light">
....
<item name="textInputStyle">@style/MyCustomOutlined</item>
</style>