LinearLayout设置match_parent无效的问题

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

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

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

在这里插入图片描述

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

在这里插入图片描述
这样就可以正确的显示了。
不过,当父布局为全屏的时候不建议在将一个子视图设置为全屏。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <androidx.swiperefreshlayout.widget.SwipeRefreshLayout android:id="@+id/home_swiperefresh" android:layout_width="match_parent" android:layout_height="match_parent" > <androidx.recyclerview.widget.RecyclerView android:id="@+id/home_recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" /> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> <androidx.appcompat.widget.Toolbar android:layout_width="match_parent" android:layout_height="80dp" app:layout_constrainTop_toTopOf="parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_home_scan_24"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginEnd="18dp" android:layout_weight="1" android:background="@color/white" android:cursorVisible="false" android:focusable="false" android:hint="搜索" android:minHeight="30dp" android:textSize="16dp" /> </LinearLayout> </androidx.appcompat.widget.Toolbar> </androidx.constraintlayout.widget.ConstraintLayout>
07-17

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值