Android ConstraintLayout无法将按钮控件固定在父布局底部问题求助
问题原因
你当前的布局配置存在约束冲突,预览和运行环境的布局计算逻辑差异导致按钮位置偏移:
你为btn_next_click同时设置了android:layout_marginTop="@dimen/dp_108"和底部到父布局的约束,多余的顶部边距会干扰布局计算,实际运行时就会出现按钮上移的问题。
修复步骤
- 直接删除
btn_next_click控件中的android:layout_marginTop="@dimen/dp_108"属性即可,你已经将按钮底部绑定到父布局底部,不需要额外设置顶部边距。 - 如果需要避免按钮和上方的
tv_preview控件发生重叠,可以补充顶部约束和垂直偏移配置,修改后的按钮代码如下:
<TextView android:id="@+id/btn_next_click" style="@style/ButtonStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/dp_44" android:enabled="false" android:text="@string/next" app:layout_constraintTop_toBottomOf="@id/tv_preview" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintVertical_bias="1.0" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" />
- 额外排查:如果修改后还是异常,检查加载该布局的页面配置,确认该ConstraintLayout的父容器高度为
match_parent,如果父容器是ScrollView或者高度为wrap_content,布局无法撑满屏幕,按钮自然无法固定到屏幕底部。
内容的提问来源于stack exchange,提问作者MARSH
相关产品推荐
相关产品推荐

