美文网首页
RelativeLayout实现子布局居中的两种方式及差异

RelativeLayout实现子布局居中的两种方式及差异

作者: 小智在不在 | 来源:发表于2018-07-17 22:28 被阅读0次

    废话不多说,今天记录一下RelativeLayout两种实现子布局居中的方式和差异,先从需求开始,接到UI如下需求:

    系统消息页面需求.png

    这是系统消息的列表页,注意看第二个Item,左边用来显示时间的View上下间距都是54Px,且左右两个View都是居中的,下面看代码:


    第一版实现代码.png

    注意红框位置,直接在RelatveLayout中使用了android:gravity="center_vertical"属性使子View居中,看起来应该没问题,我们看一下实际效果:

    实现方式1效果图.png

    可以看到,因为我们在代码中设置右边的TextSize比左大的原因,同样的条件下右边的View要比左边大,虽然我们期望两个子View都居中,但是实际只满足了右边的View居中的需求,左边的View和右边的View在同一起始位置但没有居中,所以android:gravity="center_vertical"属性并不能使所有子View无差别居中,只能满足最大子View居中的条件。
    接下来我们来换一种实现方式:


    第二版实现代码.png

    这次我们改用在每一个子View中单独设置android:layout_centerVertical="true"属性来请求在父View中居中,这次看一下实现效果:


    实现方式2效果图.png
    可以看到这一次我们确实实现了每一个子View单独居中的效果,所以可以的出结论:RelativeLayout使用属性android:gravity="center_vertical"期望使子View居中时只会以最大子View为参考,其他子View只是与最大子View同一起始位置,无法确保每一个子View居中,适用于子View相同大小的情况。
    而对每一个子View设置属性android:layout_centerVertical="true"可以确保每一个子View单独对RelativeLayout请求居中,并不相互影响,所以适用范围更广。

    相关文章

      网友评论

          本文标题:RelativeLayout实现子布局居中的两种方式及差异

          本文链接:https://www.haomeiwen.com/subject/sxxnpftx.html