以编程方式更改supportActionBar的颜色
问题描述:
我遇到了更改支持ActionBar的背景可绘制更改大多数栏的颜色但在文本和图标周围留下旧颜色的问题。我试着改变了我用来制作它的支持ActionBar和ToolBar的颜色。我已经尝试了许多不同的UI元素失效方式。我累了设置颜色和文字是不同的命令。我试图隐藏和显示文字。我不能让它变成一种纯色。以编程方式更改supportActionBar的颜色
这里就是我有我的动作条的风格:
<style name="LocationBar" parent="ThemeOverlay.AppCompat.ActionBar">
<item name="android:textColorPrimary">@color/text_color_primary_inverse</item>
<item name="android:textColorSecondary">@color/text_color_primary_inverse</item>
<item name="android:background">@color/weather_cool</item>
</style>
这是我如何将它添加到我的活动:
<android.support.v7.widget.Toolbar
android:id="@+id/location_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:theme="@style/LocationBar"/>
这在Java代码中,我将其设置为supportActionBar:
_locationBar = (Toolbar)findViewById(R.id.location_bar);
setSupportActionBar(_locationBar);
再经过我取的天气。我试着调整颜色是这样的:
ColorDrawable warmDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.weather_warm));
getSupportActionBar().setBackgroundDrawable(warmDrawable);
导致你在图片中看到。大部分栏变色,但不是全部。
答
...改变支撑动作条的背景绘制改变 颜色的大部分酒吧的,但离开旧颜色围绕文本和 图标...
出现这种情况的原因是因为你使用android:theme
代替style
。 theme
适用于您的Toolbar
中的每个孩子,在这种情况下包括TextView
标题背景和您的设置按钮背景。 style
仅用于视图级别,仅适用于您的Toolbar
背景。
<android.support.v7.widget.Toolbar
...
android:theme="@style/LocationBar" />
以前
<android.support.v7.widget.Toolbar
...
style="@style/LocationBar" />
答
在您的活动课程中编写代码,如下所示。
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#004D40")));
这将改变背景颜色为#004D40
+0
这就是我正在做的,并在图片中得到结果。 – CaseyB
后,你可以分享你的'styles.xml'? – azizbekian
更改主题可以在这里工作。 –
我添加了很多更多的信息。对不起,这是迟到了,我没有想到! – CaseyB