CoordinatorLayout

实现沉浸式状态栏,意思是可以activity状态栏的内容可以显示在状态栏。
相关控件都来自于Design support library;是属于Material Design的思想,包括CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout、Toolbar,通过这几个就可以完美的实现。

注意要点:

1.新建values-19、values-21文件夹及styles.xml文件

  • values/styles

    

    

接下来就是activity的布局:




    

        

            

                

                

                
            

        

        

            

        
    


activity.java相关代码:

private void initView() {
        toolbar = findViewById(R.id.toolbar);
        collapsingToolbarLayout = findViewById(R.id.collapsing_toolbar_layout);
        imgCollapsed = findViewById(R.id.img_collapsed);

        toolbar.setTitle("AppBarLayout");
        toolbar.setNavigationIcon(R.drawable.btn_24_back_b_nor);

        collapsingToolbarLayout.setTitle("CollapsingToolbar");
        collapsingToolbarLayout.setContentScrimColor(ContextCompat.getColor(this, R.color.colorAccent));
        collapsingToolbarLayout.setStatusBarScrimColor(ContextCompat.getColor(this, R.color.colorAccent));

        setSupportActionBar(toolbar);
//        setImmerseLayout(toolbar);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });

        tvScrollContent = findViewById(R.id.tv_scroll_content);

//获取StatusBar高度,并设置给标题栏(Toolbar)
protected void setImmerseLayout(View view) {// view为标题栏
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            int statusBarHeight = getStatusBarHeight(this.getBaseContext());
            view.setPadding(0, statusBarHeight, 0, 0);
        }
    }

    public int getStatusBarHeight(Context context) {
        int result = 0;
        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen",
                "android");
        if (resourceId > 0) {
            result = context.getResources().getDimensionPixelSize(resourceId);
        }
        return result;
    }

看了几篇相关的博文,然后自己亲自试着写了一下,遇到了一些问题,所以还是要实践一下。但还是有些模糊。有时间再理解一下。

你可能感兴趣的:(CoordinatorLayout)