以编程方式更改工具栏背景颜色不会更改工具栏标题背景颜色

时间:2015-04-06 01:07:36

标签: android android-actionbar android-toolbar

我试图以编程方式更改工具栏背景颜色:

getSupportActionBar().setBackgroundDrawable(newColorDrawable(getResources().getColor(R.color.test_color_blue)));

这就是结果:

之前:

enter image description here

后:

enter image description here

工具栏标题仍然具有与以前相同的背景颜色。

这是我的工具栏xml:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/Theme.Toolbar">

这是主题:

<style name="Theme.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:maxHeight">@dimen/abc_action_bar_default_height_material</item>
    <item name="android:background">@color/primary</item>
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@android:color/white</item>
    <item name="titleTextAppearance">@style/Theme.Toolbar.Title</item>
</style>

5 个答案:

答案 0 :(得分:13)

按如下方式更改您的代码:

<强> toolbar.xml

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
        style="@style/MyToolbarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical">

主题/风格

<style name="MyToolbarStyle">
    <item name="android:maxHeight">@dimen/abc_action_bar_default_height_material</item>
    <item name="android:background">@color/primary</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="titleTextAppearance">@style/Theme.Toolbar.Title</item>
    <!-- No need for colorPrimary, colorPrimaryDark, colorAccent here
         this should go to the AppTheme -->
</style>

<强>结果

在设置新背景颜色之前:

picture before background color change

之后:

picture after background color change

答案 1 :(得分:5)

迟到了,但我希望这会有帮助评论

我的活动样式中有item

<item name="android:background">someColor</item>

所以当我更改toolbar颜色时,标题和菜单项不会改变背景。 我刚删除了这个item,现在它完美无缺。

我没有时间了解细节,但我认为这可能对其他人有用。

答案 2 :(得分:4)

使用它来访问textview

public void changeToggleTitle() {
    if (mToolbar != null) {
        for(int i= 0; i < mToolbar.getChildCount(); i++){
            View v = mToolbar.getChildAt(i);
            if(v != null && v instanceof TextView){
                TextView t = (TextView) v;
                // Do the magic 
            }
        }
    }
}

答案 3 :(得分:1)

在我的style中,我改变了

        <item name="android:background">@color/background</item>

        <item name="android:windowBackground">@color/background</item>

这似乎已经为我解决了。

答案 4 :(得分:0)

BEGIN
  ...
  ...
  ...
  SET p_user_id = LAST_INSERT_ID();
END;