主要记录一下在使用这几个组合控件中遇到的一些小问题。
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里面添加了各种布局,还要求背景图片的时候,如果是自适应大小,显示效果会有些问题,如果是各种按钮列表还可以,如果是比较简单的一张背景图页可以,如果在背景图上还有各种控件的时候效果比较难控制,感觉还不如自己实现来得好。