Android透明状态栏解决方案

正所谓具体情况具体分析

方案一:纯色的透明状态栏

    解决办法:

1、将需要透明的activity页面设置为全屏,状态栏变为透明;

在mainActivity中添加如下代码:

//在setContentView语句之前放入,

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
     Window window = getWindow();
     window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
     window.setStatusBarColor(Color.TRANSPARENT);
 }

注解:获取窗体,并将窗体的设为全屏,状态栏设为透明;这个时候mainActivity页面的状态栏就透明了,且覆盖在了页面上

2、在mainActivity.xml中加入一个自定义的伪状态栏,方法有很多,这里采用的是添加一个view来充当状态栏背景

<View
android:layout_width="match_parent"
android:layout_height="20px"
android:background="#D43D3D"
android:id="@+id/actionbar_bcg"
>
</View>

3、动态设置这个view的高度,因为机型不同,所以会导致状态栏的高度也不一样

//创建一个工具类,用来设置这个view的高度

public SetActionBarHeight(View v, int viewId) {
    View view=v.findViewById(viewId);
    //获取到view的布局参数
    LinearLayout.LayoutParams layoutParams=(LinearLayout.LayoutParams) view.getLayoutParams();
    //获取到view的actionbar的高度
    int height=view.getResources().getIdentifier("status_bar_height","dimen","android");
    //转化为像素值
    int res=view.getResources().getDimensionPixelSize(height);
    //将结果赋给view的高度
    layoutParams.height=res;
    //重新设置好布局参数
    view.setLayoutParams(layoutParams);
}

注解:或许还能动态设置颜色

方案二:图片透明状态栏,4行代码搞定

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

Window window = getWindow(); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); window.setStatusBarColor(Color.TRANSPARENT);

}

欢迎加入技术交流群:QQ群:864837144

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值