是否可以以编程方式更改拆分操作栏的颜色?

时间:2014-11-16 05:58:35

标签: android colors android-actionbar programmatically-created splitactionbar

如何在代码中更改拆分操作栏的颜色,而不是在xml中?我的用户可以选择操作栏的颜色,我希望它也可以更改分割操作栏的颜色(显示在屏幕底部的操作栏)。

我正在使用android manifest

中的android:uiOptions="splitActionBarWhenNarrow"实现splitActionBar 到目前为止,我正在尝试这个,但它无法正常工作

final int splitBarId = getResources().getIdentifier("split_action_bar", "id", "android");

    final View splitActionBar = findViewById(splitBarId);

    if (splitActionBar != null) {

          splitActionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionbar_colors)));

    }

        }

3 个答案:

答案 0 :(得分:1)

框架没有提供以编程方式更改它的方法;但是,您可以使用Resources.getIdentifier查找View并从那里调整背景Drawable

The internal id is split_action_bar

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    final int splitBarId = getResources().getIdentifier("split_action_bar", "id", "android");
    final View splitActionBar = findViewById(splitBarId);
    if (splitActionBar != null) {
        // Adjust the background drawable
    }
}

<强>更新

显然有ActionBar.setSplitBackgroundDrawable。绝对使用该回调而不是Resources.getIdentifier

以下是结果的屏幕截图:

Example

答案 1 :(得分:1)

使用此选项可更改分割操作栏颜色

getActionBar().setSplitBackgroundDrawable(new ColorDrawable(Color.parseColor("#33B5E5")));

如果您使用支持操作栏

,请使用此功能
getSupportActionBar().setSplitBackgroundDrawable(new ColorDrawable(Color.parseColor("#33B5E5")));

来源:http://scriptedpapers.com/2014/09/25/android-implement-spilit-action-bar-change-its-background-color/

答案 2 :(得分:0)

这应该有效

ActionBar mActionBar = getActionBar(); 
mActionBar.setBackgroundDrawable(new ColorDrawable(0xff00DDED));
mActionBar.setDisplayShowTitleEnabled(false);
mActionBar.setDisplayShowTitleEnabled(true);