Android Studio模拟器中所有控件堆叠在一起的原因是什么?

核心原因
控件全部堆叠的核心是布局容器没有为子控件配置正确的位置规则,常见场景如下:
- 你使用了
ConstraintLayout作为根布局,但没有给任何控件添加水平、纵向的约束规则,ConstraintLayout默认会将无约束的所有控件定位到父布局左上角,自然就全部堆叠在一起 - 你误用了
FrameLayout作为根布局,FrameLayout的默认规则就是所有子控件从左上角开始叠加摆放,没有额外设置位置属性的话就会完全重叠 - 你使用了
LinearLayout但漏写/错写了排列方向:本来要垂直排列的布局没有设置android:orientation="vertical",默认是横向排列,子控件宽度又都设为match_parent,也会出现重叠
解决办法
- 如果继续用
ConstraintLayout:给每个控件至少添加1个水平约束+1个垂直约束,可视化编辑界面直接拖动控件边缘的锚点到对应参照物(父布局边缘/其他控件边缘)即可自动生成约束代码,比如数字1输入框约束到父布局顶部、左边缘,数字2输入框约束到数字1输入框下方、左边缘,以此类推 - 入门阶段建议改用
LinearLayout实现计算器布局,明确设置android:orientation="vertical"让控件垂直顺序排列,不需要写复杂约束即可实现从上到下的顺序摆放,上手门槛更低 - 检查所有控件的宽高属性,不要全部设为
match_parent,输入框、按钮这类控件用wrap_content或者固定dp值更合理
内容的提问来源于stack exchange,提问作者codor01
相关产品推荐
相关产品推荐

