Android 如何从样式或主题更改选项卡颜色
Android how can i change the tab color from style or theme
您好,正如标题所暗示的那样,我确信这应该很简单,但可惜它对我不起作用,我不是在寻找像 onTabSelected 这样的花哨的东西,我只是想设置整个颜色基于主题的小部件,现在我正在尝试执行以下操作,我不确定是否正确但它不起作用,
看来这就是我需要的:
<item name="tabBackground">@color/colorPinkPrimary</item>
但是我已经尝试通过两种方式将它添加到我的主题中,但都不起作用,第一种方法是直接将它添加到我的主题中,但没有任何乐趣,我尝试的第二种方法是添加另一种主题。
<style name="CustomTabLayoutStylePink" parent="Base.Widget.Design.TabLayout">
<item name="tabSelectedTextColor">@color/selected_textPink</item>
<item name="tabIndicatorColor">@color/colorPinkAccent</item>
<item name="tabTextAppearance">@style/CustomTabTexStylePink</item>
<item name="tabBackground">@color/colorPinkPrimary</item>
</style>
并像这样从我的主题中引用它(只是重申一下,我不知道这是否是最佳实践,甚至是可行的,它看起来是正确的)
<item name="android:tabWidgetStyle">@style/CustomTabLayoutStylePink</item>
有效的如下:
<item name="android:background">@color/colorPinkPrimary</item>
这适用于我整个应用程序中的每个视图,甚至包括首选项 activity 文本视图。
tabBackground
应该在您的 XML 文件中,而不是在样式中。
<android.support.design.widget.TabLayout
...
app:tabBackground="@color/colorPinkPrimary"
...
/>
好的,所以我想要的是不可能的,我设置了一个首选项来记录应该应用什么主题,并根据选择的主题,相应地为选项卡着色,如下所示
private void setupTabBackground(){
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
// Create a new boolean and preference and set it to true
prefThemeString = sharedPreferences.getString("THEME SELECTED","BLUE");
switch (prefThemeString){
case "BLUE":
tabLayout.setBackgroundColor(getResources().getColor(R.color.colorPrimaryBlue));
break;
case "PINK":
tabLayout.setBackgroundColor(getResources().getColor(R.color.colorPinkPrimary));
break;
}
}
我认为在此 activity 中也应该有一个共享的偏好侦听器,但我稍后可以解决这个问题
您好,正如标题所暗示的那样,我确信这应该很简单,但可惜它对我不起作用,我不是在寻找像 onTabSelected 这样的花哨的东西,我只是想设置整个颜色基于主题的小部件,现在我正在尝试执行以下操作,我不确定是否正确但它不起作用,
看来这就是我需要的:
<item name="tabBackground">@color/colorPinkPrimary</item>
但是我已经尝试通过两种方式将它添加到我的主题中,但都不起作用,第一种方法是直接将它添加到我的主题中,但没有任何乐趣,我尝试的第二种方法是添加另一种主题。
<style name="CustomTabLayoutStylePink" parent="Base.Widget.Design.TabLayout">
<item name="tabSelectedTextColor">@color/selected_textPink</item>
<item name="tabIndicatorColor">@color/colorPinkAccent</item>
<item name="tabTextAppearance">@style/CustomTabTexStylePink</item>
<item name="tabBackground">@color/colorPinkPrimary</item>
</style>
并像这样从我的主题中引用它(只是重申一下,我不知道这是否是最佳实践,甚至是可行的,它看起来是正确的)
<item name="android:tabWidgetStyle">@style/CustomTabLayoutStylePink</item>
有效的如下:
<item name="android:background">@color/colorPinkPrimary</item>
这适用于我整个应用程序中的每个视图,甚至包括首选项 activity 文本视图。
tabBackground
应该在您的 XML 文件中,而不是在样式中。
<android.support.design.widget.TabLayout
...
app:tabBackground="@color/colorPinkPrimary"
...
/>
好的,所以我想要的是不可能的,我设置了一个首选项来记录应该应用什么主题,并根据选择的主题,相应地为选项卡着色,如下所示
private void setupTabBackground(){
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
// Create a new boolean and preference and set it to true
prefThemeString = sharedPreferences.getString("THEME SELECTED","BLUE");
switch (prefThemeString){
case "BLUE":
tabLayout.setBackgroundColor(getResources().getColor(R.color.colorPrimaryBlue));
break;
case "PINK":
tabLayout.setBackgroundColor(getResources().getColor(R.color.colorPinkPrimary));
break;
}
}
我认为在此 activity 中也应该有一个共享的偏好侦听器,但我稍后可以解决这个问题