Android - 关于主题Style, theme、getColor、ColorStateList
最近完善mvvm工程 https:// gitee.com/heyclock/mvvm _modularization 过程中也是涉及到md组件的一些使用,Application的theme采用 Theme.MaterialComponents 之后出现了一些默认的样式,怪怪的...
比如底部导航,比如TextInputLayout样式:
这是因为我们采用了 Theme.MaterialComponents.Light/Theme.MaterialComponents.DayNight 以后,默认的颜色啊,背景啊,图标颜色这些都相对于之前采用了另外的处理方式。比如直接用 colorPrimary 混合导航栏底部图标颜色 。
出现上面的问题,一个是我们对于属性使用不熟悉,对于重写Widget.MaterialComponents.TabLayout不知道如何完善。对于Widget.Design.TextInputLayout同样也是不熟悉。。
我们列一下配置的几个属性:
<!-- TabLayout 字体属性-->
<style name="TabLayoutTheme.text">
<item name="android:textSize">18sp</item>
</style>
<!-- TabLayout样式-->
<style name="TabLayoutTheme" parent="Widget.MaterialComponents.TabLayout">
<item name="tabMode">fixed</item>
<item name="background">@color/colorAccent</item>
<item name="tabTextAppearance">@style/TabLayoutTheme.text</item>
<item name="tabTextColor">@color/middle_gray</item>
<item name="tabRippleColor">@android:color/transparent</item>
<item name="tabIndicatorFullWidth">false</item>
<item name="tabIndicatorColor">@color/app_main_activatedcolor</item>
<item name="tabSelectedTextColor">@color/colorPrimary</item>
<item name="tabIndicatorHeight">4dp</item>
</style>
<!-- TextInputEditText 主题: boxBackgroundColor是配置的到属性里面的 -->
<style name="EditTextStyle" parent="Widget.Design.TextInputLayout">
<item name="boxBackgroundMode">none</item>
<item name="android:textColorHint">@color/middle_gray</item>
<item name="errorEnabled">true</item>
<item name="counterEnabled">true</item>
</style>
<!-- MaterialButton主题-->
<style name="AppTheme.Button" parent="Widget.AppCompat.Button.Colored">
<item name="colorButtonNormal">@color/app_main_activatedcolor</item>
<item name="android:textColor">@color/white</item>
</style>
有些属性28才有,适配刘海的,所以新建了一个:
使用:
1。 com.google.android.material.tabs.TabLayout 使用的时候 - 注意是style,不是theme
<com.google.android.material.tabs.TabLayout
android:id="@+id/ah_bottomTbL"
style="@style/TabLayoutTheme"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/tablayout_bg_shape"
app:layout_constraintBottom_toBottomOf="parent">
</com.google.android.material.tabs.TabLayout>
2. com.google.android.material.textfield.TextInputLayout 的配置 - 注意是theme..
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/al_userNameTL"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:theme="@style/EditTextStyle"
app:boxBackgroundColor="@color/textinput_bg"
app:counterMaxLength="25"
app:layout_constraintTop_toBottomOf="@+id/al_commonLogo"
app:startIconDrawable="@drawable/user_tip_icon">
<com.google.android.material.textfield.TextInputEditText