android对齐其他控件底部,Android Relative Layout 安卓相对布局详解

dec1fcf1e94eb16e8ba13a6ddb424397.png

思维导图可在幕布找到

1. 基础

如果在相对布局里,控件没有指明相对位置,则默认都是在相对布局的左上角:

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#FF00FF"

android:padding="20dp"

android:text="Item2"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#FF0000"

android:text="Item1"/>

7061c4d7b53bc2630edf1ccc56ebefd9.png

gravity

gravity属性用来设置容器内组件的对齐方式

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center"

android:background="#FF4081"

android:text="Item1" />

效果为

fcf67e6e88bb98ff253e47b75b8cab6f.png

2. 根据兄弟控件定位

2.1 相对兄弟组件的位置

android:layout_above:// 参考的兄弟控件上边

android:layout_below:// 参考的兄弟控件下边

android:layout_toLeftOf // 参考的兄弟控件的左边

android:layout_toRightOf // 参考的兄弟控件右边

代码示例

android:layout_below等属性通过制定控件的id来选择需要参考的兄弟组件,即@id/firstText:

android:id="@+id/firstText"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#FF0000 "

android:text="firstText" />

android:id="@+id/rightText"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#00FF00"

android:layout_toRightOf="@id/firstText"

android:text="rightText" />

android:id="@+id/bottomText"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#00FF00"

android:layout_below="@id/firstText"

android:text="bottomText" />

显示的效果为

2cf7190145854e77843f2777c090479b.png

2.2 对齐相对组件

对齐兄弟相对组件的有四个属性,为android:layout_align${方向}

android:layout_alignTop // 对齐参考组件的上边界

android:layout_alignBottom // 对齐参考组件的下边界

android:layout_alignLeft // 对齐参考组件的左边界

android:layout_alignRight // 对齐参考组件的右边界

android:layout_alignTop等属性同样是通过制定控件的ID来设置参考的组件的边界线:

代码示例1

android:id="@+id/item1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#FF00FF"

android:padding="20dp"

android:text="Item2"/>

android:id="@+id/item2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#FF0000"

android:padding="10dp"

android:layout_below="@id/item1"

android:layout_alignRight="@id/item1"

android:text="Item1"/>

效果为

e92d186a98ba947b170610da77cbcf5c.png

代码实例2

android:id="@+id/item3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#FF00FF"

android:padding="20dp"

android:text="Item3"/>

android:id="@+id/item4"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#FF0000"

android:padding="10dp"

android:layout_toRightOf="@+id/item3"

android:layout_alignBottom="@id/item3"

android:text="Item4"/>

效果为

0f97f2c301156800d2c0af9032f6626b.png

3. 根据父控件定位

3.1 与父控件的四个边缘对齐

与父控件的边缘对齐的属性由android:layout_alignParent${方向}组成

android:layout_alignParentTop // 顶部对齐于父控件

android:layout_alignParentBottom // 底部对齐于父控件

android:layout_alignParentLeft // 左对齐于父控件

android:layout_alignParentRight // 右对齐于父控件

需要注意的是,这些属性是通过布尔值来设置是否对齐于父控件的某个方向的:

android:layout_width="match_parent"

android:layout_height="300dp">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="first"

android:textSize="50dp"

android:background="#FF0000"

android:layout_alignParentRight="true"

android:layout_alignParentBottom="true"/>

效果为:

86d167215e8c73da48be1ebbb01339f4.png

除此之外还有layout_alignParentLeft、layout_alignParentTop

3.2 对齐至父控件的中央

对齐至父控件中央的属性可以用来设置居中的布局位置:

android:layout_centerHorizontal // 水平居中

android:layout_centerVertical // 垂直居中

android:layout_centerInParent // 水平且垂直居中,处于父组件的正中央位置

代码示例

同样,这些属性也是通过设置的值也是布尔类型:

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="centerHorizontal"

android:textSize="50dp"

android:background="#FF0000"

android:layout_centerHorizontal="true"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="centerVertical"

android:textSize="50dp"

android:background="#FF0000"

android:layout_centerVertical="true"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="centerInParent"

android:textSize="15dp"

android:background="#0000FF"

android:layout_centerInParent="true"/>

效果为:

252a8d8980913034cf575b94a36146b4.png

4. 其他

对齐至控件的基准线

android:id="@+id/firstText"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="100dp"

android:text="Hello" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_toRightOf="@+id/firstText"

android:text="World" />

如果没有使用对齐基准线,那么当Hello的字体的大于world时,world则无法和hello在同一基准线上:

9aa744586400947c7213cb7918359bd3.png

通过给world的TextView添加layout_alignBaseline属性来实现对齐firstText控件的基准线:

android:layout_alignBaseline="@+id/firstText"

效果为:

92b07193b777a8d89ffa5d1c52fb110c.png

5. 实例

用相对布局来完成经典的梅花布局

android:id="@+id/img1"

android:layout_width="80dp"

android:layout_height="80dp"

android:layout_centerInParent="true"

android:src="@drawable/pic1"/>

android:layout_width="80dp"

android:layout_height="80dp"

android:layout_centerInParent="true"

android:layout_toLeftOf="@+id/img1"

android:layout_centerVertical="true"

android:src="@drawable/pic2"/>

android:layout_width="80dp"

android:layout_height="80dp"

android:layout_toRightOf="@+id/img1"

android:layout_centerVertical="true"

android:src="@drawable/pic3"/>

android:layout_width="80dp"

android:layout_height="80dp"

android:layout_above="@+id/img1"

android:layout_centerHorizontal="true"

android:src="@drawable/pic4"/>

android:layout_width="80dp"

android:layout_height="80dp"

android:layout_below="@+id/img1"

android:layout_centerHorizontal="true"

android:src="@drawable/pic5"/>

效果图为

cover-1534512896.png

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值