Android中如何通过代码动态调整AppBarLayout使其停靠在页面底部
动态设置AppBarLayout底部停靠的实现方法
前提说明
- AppBarLayout的父布局必须为
ConstraintLayout,你当前XML中使用的约束属性属于ConstraintLayout专属属性 - 若之前给AppBarLayout设置过顶部对齐父布局的约束,需要先清除该约束,避免出现布局拉伸、位置异常的问题
代码实现
Kotlin 版本
// 1. 获取AppBarLayout实例 val appBarLayout = findViewById<AppBarLayout>(R.id.appbarLayout) // 2. 强转获取ConstraintLayout类型的布局参数 val params = appBarLayout.layoutParams as ConstraintLayout.LayoutParams // 3. 绑定AppBarLayout底部到父布局底部 params.bottomToBottom = ConstraintLayout.LayoutParams.PARENT_ID // 可选:清除之前的顶部约束(如果之前设置了topToTop属性的话) params.topToTop = ConstraintLayout.LayoutParams.UNSET // 4. 应用新的布局参数 appBarLayout.layoutParams = params
Java 版本
// 1. 获取AppBarLayout实例 AppBarLayout appBarLayout = findViewById(R.id.appbarLayout); // 2. 强转获取ConstraintLayout类型的布局参数 ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) appBarLayout.getLayoutParams(); // 3. 绑定AppBarLayout底部到父布局底部 params.bottomToBottom = ConstraintLayout.LayoutParams.PARENT_ID; // 可选:清除之前的顶部约束(如果之前设置了topToTop属性的话) params.topToTop = ConstraintLayout.LayoutParams.UNSET; // 4. 应用新的布局参数 appBarLayout.setLayoutParams(params);
补充说明
如果需要设置底部边距,可以在应用布局参数前添加对应代码,边距值单位为px,若需要使用dp单位要自行做单位转换:
- Kotlin写法:
params.bottomMargin = 你需要的边距数值 - Java写法:
params.bottomMargin = 你需要的边距数值
内容的提问来源于stack exchange,提问作者Shadow
相关产品推荐
相关产品推荐

