Android 自定义状态栏

转载自 http://blog.csdn.net/hystudio_lzu/article/details/55096774
一、目标:Android5.0以上

二、步骤

1、在res-values-colors.xml下新建一个RGB颜色

[java] view plain copy

    <?xml version="1.0" encoding="utf-8"?>  
    <resources>  
        <color name="colorPrimary">#3F51B5</color>  
        <color name="colorPrimaryDark">#303F9F</color>  
        <color name="colorAccent">#FF4081</color>  
        <color name="theRed">#ff6a69</color>  
    </resources>  

2、新建一个布局,名为actionbarlayout.xml,在后边重写布局时用于添加
[java] view plain copy

    <?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:orientation="vertical"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content">  
        <TextView  
            android:id="@+id/actionBarId"  
            android:layout_width="match_parent"  
            android:layout_height="wrap_content"  
            />  
    </LinearLayout>  

3、重写LineaLayout布局,放置步骤二新建的布局在顶部,用作背景颜色的容器
[java] view plain copy

    public class ActionBarLayOut extends LinearLayout {  
        public ActionBarLayOut(Context context, AttributeSet attrs){  
            super(context,attrs);  
            LayoutInflater.from(context).inflate(R.layout.actionbarlayout,this);  
        }  
    }  

3、在主布局里调用这个重写后的线性布局
[java] view plain copy

    <?xml version="1.0" encoding="utf-8"?>  
    <com.example.test.ActionBarLayOut xmlns:android="http://schemas.android.com/apk/res/android"  
        xmlns:tools="http://schemas.android.com/tools"  
        android:id="@+id/activity_main"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        android:orientation="vertical"  
        tools:context="com.example.test.MainActivity">  
        <TextView  
            android:layout_width="match_parent"  
            android:layout_height="wrap_content"  
            android:background="@color/theRed"  
            android:text="Hello World!" />  
    </com.example.test.ActionBarLayOut>  

 4、在main活动中进行相应设置
[java] view plain copy

    public class MainActivity extends AppCompatActivity {  
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.activity_main);  
            TextView textView = (TextView)findViewById(R.id.actionBarId);  
            int color = getResources().getColor(R.color.theRed);  
            setActionBarColor(textView,color);  
        }  
        protected void setActionBarColor(TextView textView, int ActionBarColor){  
            //----------------------------------隐藏标题栏----------------------------------------------  
            if (getSupportActionBar()!=null) {  
                getSupportActionBar().hide();  
            }  
            //------------------------------------------------------------------------------------------  


            //----------------------------------将状态栏设置为透明--------------------------------------  
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {  
                Window window = getWindow();  
                window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS  
                        | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  
                window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN  
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION  
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);  
                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);  
                window.setStatusBarColor(Color.TRANSPARENT);  
                window.setNavigationBarColor(Color.TRANSPARENT);  
            }  
            //------------------------------------------------------------------------------------------  
            /** 
             * 首先获取状态栏的高度statusBarHeight1,然后在状态栏的位置放一个空的TextView, 
             * 高度设置为statusBarHeight1,然后将TextView的背景颜色进行设置,这样就可以变相 
             * 的给状态栏设置颜色 
             */  
            int statusBarHeight1 = -1;  
            //获取status_bar_height资源的ID  
            int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");  
            if (resourceId > 0) {  
                //根据资源ID获取响应的尺寸值  
                statusBarHeight1 = getResources().getDimensionPixelSize(resourceId);  
            }  
            textView.setHeight(statusBarHeight1);  
            textView.setBackgroundColor(ActionBarColor);  
        }  
    }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值