Android之布局

Posted Cristiano_san

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android之布局相关的知识,希望对你有一定的参考价值。

一、布局的定义
布局:一种可用于放置很多控件的容器,可以按照一定的规律调整内部控件的位置

二、 线性布局(LinearLayout)

  • 1、 定义:该布局会将它所包含的控件在线性方向上依次排列,其代码都是在LinearLayout元素下实现的
  • 2、布局文件中的android:orientation属性指定了控件的排列方向。
    • 若是vertical,则控件按垂直方向排列;若为horizontal,则控件按水平方向排列。
    • 注:如果声明为vertical,则内部控件的高度不能指定为match_parent;
      如果声明为horizontal,则内部控件的宽度不能指定为match_parent;
  • 3、android:gravity用于指定文字在控件中的对齐方式;而android:layout_gravity用于指定控件在布局中的对齐方式。
  • 4、若LinearLayout的排列方向为vertical时,只有水平方向上的对齐方式才会改变,因为垂直方向上的长度不是固定的;若为horizontal时,只有垂直方向上的对齐方式才会改变,因为水平方向上的长度不是固定的
  • 5、android:layout_weight允许我们使用比例的方式来制定控件的大小,若此时控件的排列方向为horizontal,则宽度可调成0dp;
  • 6、dp是Android中用于指定控件大小、间距等属性的单位

三、 相对布局(RelativeLayout)

  • 1、定义:他可以通过相对定位的方式让控件出现在布局的任何位置,其控件都是在RelativeLayout布局下实现的
    相对布局具有两种相对性:
    • 1)相对于父布局定位,其中几个常见的属性:
      android:layout_alignParentRight:表示相对于父布局处在右边
      android:layout_alignParentLeft:表示相对于父布局处在左边
      android:layout_alignParentTop:表示相对于父布局处在上边
      android:layout_alignParentButton:表示相对于父布局处在下边
    • 2)相对于控件定位,其中几种常见的属性:
      android:layout_centerInParent:表示定义定位于中间位置的控件(我们以控件Button 3为基准)
      android:layout_above="@id/button_3":表示定义定位相对于中间控件顶部的位置
      android:layout_below="@id/button_3":表示定义定位相对于中间控件底部的位置
      android:layout_toLeftOf="@id/button_3":表示定义定位相对于中间控件左边的位置
      android:layout_toRightOf="@id/button_3":表示定义定位相对于中间控件右边的位置
    • 3)
      android:layout_alignLeft:表示让一个控件的左边缘和另一个控件的左边缘对齐
      android:layout_alignRight:表示让一个控件的右边缘和另一个控件的右边缘对齐
      android:layout_alignLeft:表示让一个控件的顶部边缘和另一个控件的顶部边缘对齐
      android:layout_alignLeft:表示让一个控件的底部边缘和另一个控件的底部边缘对齐

四、 帧布局(FrameLayout)

  • 1、定义:此布局没有方便的定位方式,所有的控件都会默认摆放在布局的左上角,其代码都是在FrameLayout布局下实现的
  • 2、当然我们也可以通过android:layout_gravity对控件的对齐方式进行调整,以达到避免所有控件摆放在左上角的情况。向对于前两种布局,这种情况的布局使用较少

五、百分比布局

  • 1、由于只有LinearLayout布局支持使用android:layout_weight属性来实现按比例指定控件大小的功能,其余两个布局都不支持
  • 2、因此百分比布局只为FrameLayoutRelativeLayout中进行了扩展,使得在这两个布局之下也能实现按比例指定控件大小的功能,其控件分别是在PercentFrameLayoutPrecentRelativeLayout布局下实现的,这两个布局分别继承了前者的所有属性和方法
  • 3、在百分比布局下,无需再使用wrap_content、match_parent等方式来指定控件的大小,直接指定控件在布局中所占的百分比就行,并且通过layout_gravity来指定控件的位置
  • 4、build.gradle文件中添加百分比布局库的依赖 implementation 'com.android.support:percent:24.2.1'

以上是关于Android之布局的主要内容,如果未能解决你的问题,请参考以下文章

Android获取片段中的布局高度和宽度

如何在android中的地图片段内中心线性布局?

iOS 相当于 Android 片段/布局

带有两个列表片段的可滚动布局

在Android中,如何将数据从类传递到相应的布局/片段文件?

android布局片段和普通布局