改变 AppCompat Action Bar 的背景颜色

5

我在一个片段中,当用户点击按钮时,我想改变操作栏颜色和视图背景颜色。目前我拥有的代码会导致无论用户选择什么颜色,操作栏都会变成灰色。

private void changeColor( int colorId ) {
    ActionBar actionBar =  ((ActionBarActivity )getActivity()).getSupportActionBar();
    actionBar.setBackgroundDrawable( new ColorDrawable( colorId ) );
    this.getView().setBackgroundColor( getResources().getColor( colorId ) );
}

我已将我的styles.xml中的actionbar主题设置为蓝色,不确定是否有任何影响。如果您有任何建议,请告诉我。

谢谢, Nathan

解决方案: 必须更改:

actionBar.setBackgroundDrawable( new ColorDrawable( colorId ) );

致:

actionBar.setBackgroundDrawable( new ColorDrawable( getResources().getColor( colorId ) ) );

如果您从styles.xml中删除了蓝色,会发生什么? - joao2fast4u
1
同样的问题,我也注意到当我尝试在我的ListView行中的线性布局上设置背景颜色时,我得到相同的灰色。holder.titleLayout.setBackgroundColor(item.getColorCode()); - Nath5
@Nath5,请勿在评论中回答问题。 - Confuse
1个回答

8
如果我正确理解您的问题,您想根据用户干预更改颜色,请尝试使用以下方法。
public void setActionBarColor(int parsedColor){
    ActionBar mActionBar = getSupportActionBar();
    mActionBar.setBackgroundDrawable(new ColorDrawable(parsedColor));
    mActionBar.setDisplayShowTitleEnabled(false);
    mActionBar.setDisplayShowTitleEnabled(true);
}

在片段中使用这个

// check if instance of activity is MyActivity just an example
MyActivity mA = ((MyActivity)getActivity());
mA.setActionBarColor(Color.parseColor("#FFA2C13E"));

希望能对您有所帮助 :)
PS:我正在使用 ActionBarActivity

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接