LinearLayout设置match_parent无效的问题

在Android中遇到一个奇怪的错误

当布局中出现多层线性布局嵌套的时候,可能会出现无法正确显示线性布局的问题(当根布局为match_parent 时,他下面的子的线性布局也为match_parent时)。如下图
LinearLayout设置match_parent无效的问题_第1张图片
这段代码在android studio中显示的效果是这样的
LinearLayout设置match_parent无效的问题_第2张图片
看似是没有问题的android studio中是可以正确的解析这个xml文件的(是符合我们预期的,占满了屏幕),但是在手机模拟器和真机(测试过)上面却是这样的,如下图
LinearLayout设置match_parent无效的问题_第3张图片
这里可以看到他并没有想我们想的那样,占满整个屏幕,而是被小了,(还有一种情况就是,整个布局被压成了一条线显示,这个以后会说到,现在说暂时的还好,没有被养成一条线,那样太影响预览了
这样看起来是没有问题的,但是明显不符合我们的预期(没有占满屏),影响了预览,这与我们在android studio中看到的效果是不一致的,导致这个问题的原因就是线性布局的嵌套,当根布局为线性布局时。子布局也为线性布局且子布局的layout_width=”match_parent” 和layout_height=”match_parent”时
就会出现这种情况,如下图这种情况
LinearLayout设置match_parent无效的问题_第4张图片

父布局和子布局都为match_parent时,再向子布局中写控件时,就会被压缩显示。
解决的方法:
把外层的父布局改为相对布局(RelativeLayout)
如下图所示:

LinearLayout设置match_parent无效的问题_第5张图片

这样控件就可以正确的被解析了,如下图

LinearLayout设置match_parent无效的问题_第6张图片
这样就可以正确的显示了。
不过,当父布局为全屏的时候不建议在将一个子视图设置为全屏。

你可能感兴趣的:(Android)