0

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

我正在使用android:uiOptions="splitActionBarWhenNarrow"android manifest实现 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)));

    }

        }
4

3 回答 3

1

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

内部 id 是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.

这是结果的屏幕截图:

例子

于 2014-11-16T06:25:03.133 回答
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/

于 2015-04-04T16:07:37.253 回答
0

这应该工作

ActionBar mActionBar = getActionBar(); 
mActionBar.setBackgroundDrawable(new ColorDrawable(0xff00DDED));
mActionBar.setDisplayShowTitleEnabled(false);
mActionBar.setDisplayShowTitleEnabled(true);
于 2014-11-16T06:05:30.333 回答