Android基础(二)布局

主要包括:LinearLayout线性布局、RelativeLayout相对布局、FrameLayout帧布局、ConstraintLayout约束布局和DrawerLayout抽屉布局。

1.LinearLayout线性布局
(1)android:orientation=“vertical” // 垂直排列
android:orientation=“horizontal” // 水平排列
(2)超出屏幕宽度的内容不显示。
(3)android:gravity=“center” //子容器在父容器中的位置(这里设置的垂直水平居中)
注意:gravity是针对当前控件里面内容的摆放,如果是容器,则针对的是容器里面子view的摆放;如果是控件,则针对的是控件里面内容的摆放。
(4)layout_gravity是指当前控件在父控件里面的摆放位置,不过需要注意的一点是父控件设置的gravity的级别要低于子控件设置的layout_gravity。可以总结为如果父控件设置了gravity的同时,子View设置了layout_gravity,那么以子View设定的为准。
注意:android:orientation=“vertical”,子View使用layout_gravity在垂直方向上的设定无效;
android:orientation=“horizontal”,子View使用layout_gravity在水平方向上的设定无效。
(5)权重:layout_weight属性(首先width要设置为0dp)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:gravity="right|bottom">
    <Button
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Button" />
    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:text="Button" />
    <Button
        android:id="@+id/button3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Button" />
</LinearLayout>

拓展:View与ViewGroup
Android的UI界面都是由View和ViewGroup及其派生类组合而成的。其中,View是所有UI组件的基类,而ViewGroup是容纳View及其派生类的容器,ViewGroup也是从View派生出来的。一般来说,开发UI界面都不会直接使用View和ViewGroup(自定义控件的时候使用),而是使用其派生类。
通俗地理解:View就是TextView等控件;ViewGroup就是LinearLayout等布局容器。

2.RelativeLayout相对布局
可以分为相对于容器(取值为boolean)、相对于控件两类(需要用到相对控件的id)。
(1)RelativeLayout类:相对布局(RelativeLayout)将子视图以相对位置显示。默认显示在父视图的左上角。
layout_alignParentTop,父视图的上边
layout_alignParentBottom,父视图的下边
layout_alignParentLeft,父视图的左边
layout_alignParentRight,父视图的右边
设置4个子视图在边角位置。
(2)居中显示:layout_centerXX可以在父视图内居中显示。可以配合alignParentXX使用。
layout_centerInParent,相对于父视图完全居中
layout_centerHorizontal,相对于父视图水平居中
layout_centerVertical,相对于父视图垂直居中
(3)相对视图对齐:这里要用到相对视图的id。
layout_above,视图的下边与相对视图的上边对齐
layout_below,视图的的上边与相对视图的下边对齐
layout_toRightOf,视图的左边与相对视图的右边对齐
layout_toLeftOf,视图的右边与相对视图的左边对齐
(4)边对齐:这里要用到基准视图的id。(基准视图同上面的相对视图)
layout_alignTop,视图与基准视图的上边对齐
layout_alignBottom:视图与基准视图的下边对齐
layout_alignLeft:视图与基准视图的左边对齐
layout_alignRight:视图与基准视图的右边对齐
layout_alignBaseline:视图与基准视图的基准线对齐(如TextView的文本内容底部与EditText的文本内容底部对齐)

3.FrameLayout帧布局
(1)这种布局没有方便的定位方式,所有的控件都会默认摆放在布局的左上角。
(2)后添加的控件会覆盖前面的控件。
(3)除了这种默认摆放效果之外,还可以使用android:layout_gravity属性来指定控件在布局中的对齐方式,这和LinearLayout中的用法是相似的。
(4)总体来讲,FrameLayout由于定位的欠缺,导致它的应用场景也比较少,不过之后使用碎片的时候是可以使用到的。

4.ConstraintLayout约束布局
在较新版本的Android Studio中,ConstraintLayout已经作为默认布局存在了,并且提供了许多放置对象的方法:可以相对于它们的容器本身进行约束、相对于其他对象约束或者彼此之间进行约束、以及相对于你自己创建的guileline(辅助线)进行约束。这些方法可以让你在同一层次中创建大型、复杂、动态和响应式的视图,甚至还能支持动画!
(在xml文件的Design视图界面利用各控件的锚点进行约束,约束后代码自动生成)
约束布局可以参考这篇文章,很快就能上手:
Android入门教程:ConstraintLayout约束布局

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

注意:带有"Hello World!"文本的TextView元素已经有了一些约束属性,例如app:layout_constraintBottom_toBottomOf=“parent”,它的作用是将此视图的底部约束到其父容器的底部。在相对其父容器顶部、底部、左侧还有右侧都约束后,包含"Hello World!"的 TextView便处于了屏幕的中心。
补充:tools前缀的属性都是服务于布局编辑器中的,只在XML的预览视图中起作用,实际运行时是没有用的。

5.DrawerLayout抽屉布局
在这里插入图片描述
抽屉布局参考文章:
DrawerLayout使用详解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值