android怎么设置状态栏和actionbar同颜色? 200

 我来答
Zore灬愛
2017-08-08 · TA获得超过1870个赞
知道小有建树答主
回答量:1126
采纳率:77%
帮助的人:173万
展开全部

我今天下午才搞了这东西,也查了好多资料。

首先状态栏颜色是可以设置的,但你不可能每个界面的头部都一个颜色,每次都去修改头部颜色比较麻烦,比较简单的方法就是让状态栏透明,然后你就会发现所有的头部都定到状态栏上了,接下来给头部一个PaddingTop就好了,但状态栏透明只有手机API大于21才有用,所以判断一下大于21再用,不大于就不弄透明了。

关键代码:

BaseActivity


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//这就是透明
}
//透明之后所有的头部都会顶上来,然后就是加paddingtop了

//头部layout公用,rl_title_content是最外层的RelativeLayout。
RelativeLayout rl_title_content = findViewById(R.id.rl_title_content);
if (rl_title_content != null) {
    //getStatusBarHeight是获取状态栏的高度的
    rl_title_content.setPadding(0,Utils.getStatusBarHeight(this),0,0);//左上右下
}


public static int getStatusBarHeight(Context context) {
    Class<?> c = null;
    Object obj = null;
    Field field = null;
    int x = 0, sbar = 0;
    try {
        c = Class.forName("com.android.internal.R$dimen");
        obj = c.newInstance();
        field = c.getField("status_bar_height");
        x = Integer.parseInt(field.get(obj).toString());
        sbar = context.getResources().getDimensionPixelSize(x);
    } catch (Exception e1) {
        e1.printStackTrace();
    }
    return sbar;
}

大概就是这样,有什么问题继续问我。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式