CoordinatorLayout+ AppBarLayout+ CollapsingToolbarLayout

主要记录一下在使用这几个组合控件中遇到的一些小问题。

CollapsingToolbarLayout是只能作为AppBarLayout的子布局,一般会加toolbar和其它的布局,反正是一个FrameLayout,随便加。

想要当前控件侵入到状态栏上,布局必须支持android:fitsSystemWindows=“true”。
想要上面这个属性生效还必须设置系统状态栏:
@android:color/transparent
当设置透明就会默认把布局撑上去,上面这个是撑上去之后预留出状态栏的空间。

来到了CollapsingToolbarLayout中,toolbar不需要加,要不然它会把布局撑上去跟状态栏重叠。

折叠之后如果toolbar需要留在屏幕上,设置它的背景色app:contentScrim

系统状态栏的颜色:app:statusBarScrim="",也可以在style那里设置好,我这里折叠之前是被沉浸式布局的颜色覆盖,折叠上去之后才会显示这些颜色。
@color/material_grey_50

修改系统状态栏的字体颜色: true 黑色

设置toolbar不显示标题,显示返回键:
setSupportActionBar(toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowTitleEnabled(false)
支持自定义返回键图标和颜色

    private fun setToolbarCustomTheme(id: Int) {
        val upArrow = ContextCompat.getDrawable(this, R.drawable.ic_back_black)
        if (upArrow != null) {
            upArrow.setColorFilter(
                ContextCompat.getColor(this, id),
                PorterDuff.Mode.SRC_ATOP
            )
            if (supportActionBar != null) {
                supportActionBar?.setHomeAsUpIndicator(upArrow)
            }
        }
    }

监听返回键的点击:android.R.id.home 小写开头,不小心写成大写的,心累。

    override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        if (item?.itemId == android.R.id.home) {
            finish()
        }
        return super.onOptionsItemSelected(item)
    }

当在CollapsingToolbarLayout里面添加了各种布局,还要求背景图片的时候,如果是自适应大小,显示效果会有些问题,如果是各种按钮列表还可以,如果是比较简单的一张背景图页可以,如果在背景图上还有各种控件的时候效果比较难控制,感觉还不如自己实现来得好。

你可能感兴趣的:(android筑基,android,java)