发布于 2022-08-26 13:44:47
我认为,首先要提到的是,一个主题与一个风格不同。基本上,当您应用样式时,它只会影响组件(编辑文本、视图、文本视图等)。但是,当您应用主题时,它通常会对应用程序产生影响。更多关于这个链接的信息。
因此,如果您正在应用主题,可能您正在修改应用范围中使用的一些属性,如primaryColor、secondaryColor等。很可能,editText正在使用primaryColor来设置提示的颜色,当您切换到另一个主题时,primaryColor也会受到影响,那么editText的颜色提示也会受到影响。
在以上描述的基础上,我们可以应用多种解决方案。我想提出以下建议。
默认theme.xml
<style name="AppTheme" parent="AppTheme.Base" />
<style name="AppTheme.Base" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">@color/gray_medium_dark</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorPrimaryVariant">@color/gray_dark</item>
<item name="colorSecondary">@color/cyan</item>
<item name="editTextStyle">@style/CustomEditTextStyle</item>
</style>近主题theme.xml
<style name="AppTheme" parent="AppTheme.Base">
<item name="android:windowLightNavigationBar" tools:ignore="NewApi">false</item>
</style>style.xml
<style name="CustomEditTextStyle" parent="Widget.AppCompat.EditText">
<item name="android:textSize">@dimen/text_size_16sp</item>
<item name="android:textColorHint">@color/gray_normal_light</item>
<item name="android:fontFamily">@font/roboto_condensed</item>
<item name="android:textColor">@color/colorPrimaryText</item>
<item name="android:inputType">textVisiblePassword</item>
</style>说明:关于style和themes的另一个要点是,我们可以应用类似于继承的东西。这意味着我们可以重复使用某些属性或/并修改其他属性。
因此,<item name="editTextStyle">@style/CustomEditTextStyle</item>意味着对于我的应用程序上的所有编辑文本,我想设置CustomEditTextStyle样式。此外,在nigh主题中,我们将父主题应用为parent="AppTheme.Base",而这个父版本也以CustomEditTextStyle作为编辑文本的样式,因此不会改变。
https://stackoverflow.com/questions/73500730
复制相似问题