美文网首页程序员
Android_XML布局

Android_XML布局

作者: 书虫大王X | 来源:发表于2019-09-27 10:30 被阅读0次

    1.XML布局优点:

    在XML文件中设计UI可以更好地将应用的外观与控制应用行为的代码隔离,每次修改或调整界面布局只需要修改XML文件的代码而不是修改源码和重新编译。

    2.常见的XML布局:

    • RelativeLayout(相对布局):
      能够指定子对象彼此之间的相对位置或子对象与父对象的相对位置,自由度是最大的一种布局。(使用的频率相对较高)
      注意:margin和padding的使用容易混淆:
      margin是边缘(外边距),指该控件距离父控件或其他控件的边距;padding是填充(内边距),指该控件内部内容
    • TableLayout(表格布局):
      显示滚动的单列列表,在手机设置基本就是使用的这种布局。TableLayout有点像一个表格或是矩阵。在布局中加入TableRow,它的属性是horizontal,所以每个TableRow只能横放。它里面的每个控件的高都是一样的。
    • LinearLayout( 线性布局):
      线性布局分两种。一种是水平布局,一种是垂直布局。
    属性 作用
    orientation 控价的布局方式(有水平布局和竖直布局)
    gravity 当前元素的子元素相对它的对齐方式
    layout_gravity 当前元素相对它的父元素的对齐方式
    • FrameLayout(帧布局):
      这个布局很简单,就是控件一个挨一个在左上角罗列。帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个组件,后续添加的控件会覆盖前一个。

      帧布局
    • AbsoluteLayout(绝对布局):
      绝对布局比较容易使用,以左上方为原点建立坐标系。每个控件用layout_x和layout_y表示位置。

    • ConstraintLayout(约束布局):

    1. 简介:已经取代RelativeLayout成了创建空Activity的默认布局,非常强大。布局原理:根据布局中的其他元素或视图, 确定View在屏幕中的位置, 受到三类约束, 即其他视图, 父容器(parent), 基准线(Guideline)。
      举个例子:


      效果图

      代码:

        <TextView
            android:id="@+id/TextView1"
            ...
            android:text="TextView1" />
    
        <TextView
            android:id="@+id/TextView2"
            ...
            app:layout_constraintLeft_toRightOf="@+id/TextView1" />
    
        <TextView
            android:id="@+id/TextView3"
            ...
            app:layout_constraintTop_toBottomOf="@+id/TextView1" />
    
    1. group:
      可以把多个控件归为一组,便于管理,例:
        <TextView
            android:id="@+id/TextView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
        <TextView
            android:id="@+id/TextView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toRightOf="@+id/TextView1" />
    
        <TextView
            android:id="@+id/TextView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintLeft_toRightOf="@id/TextView2" />
    
    效果图

    现在有3个并排的TextView,用Group把TextView1和TextView3归为一组,再设置这组控件的可见性,如下所示:

       <android.support.constraint.Group
            android:id="@+id/group"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="invisible"
            app:constraint_referenced_ids="TextView1,TextView3" />
    
    效果图
    • 补充:布局还可以嵌套使用,比如RelativeLayout中可以嵌套一个或多个RelativeLayout,同样也可以嵌套其他的布局。

    3.xml 配置参数:

    • 属性值为true或false:
      android:layout_centerHrizontal 水平居中
      android:layout_centerVertical 垂直居中
      android:layout_centerInparent 相对于父元素完全居中
      android:layout_alignParentBottom 贴紧父元素的下边缘
      android:layout_alignParentLeft 贴紧父元素的左边缘
      android:layout_alignParentRight 贴紧父元素的右边缘
      android:layout_alignParentTop 贴紧父元素的上边缘
      android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物

    • 属性值必须为id的引用名:
      android:layout_below 在某元素的下方
      android:layout_above 在某元素的的上方
      android:layout_toLeftOf 在某元素的左边
      android:layout_toRightOf 在某元素的右边
      android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
      android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
      android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
      android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

    • 属性值为具体的像素值,如30dip,40px:
      android:layout_marginBottom 离某元素底边缘的距离
      android:layout_marginLeft 离某元素左边缘的距离
      android:layout_marginRight 离某元素右边缘的距离
      android:layout_marginTop 离某元素上边缘的距离

    • constraint类:
      layout_constraintLeft_toLeftOf 一个元素的左边缘与另一个元素左边缘重合
      layout_constraintLeft_toRightOf 一个元素的左边缘与另一个元素右边缘重合
      layout_constraintRight_toLeftOf 一个元素的右边缘与另一个元素左边缘重合
      layout_constraintRight_toRightOf 一个元素的右边缘与另一个元素右边缘重合
      layout_constraintTop_toTopOf 一个元素的顶部与另一个元素顶部重合
      layout_constraintTop_toBottomOf 一个元素的顶部与另一个元素底部重合
      layout_constraintBottom_toTopOf 一个元素的底部与另一个元素顶部重合
      layout_constraintBottom_toBottomOf 一个元素的底部与另一个元素底部重合
      layout_constraintBaseline_toBaselineOf 一个元素的底部与另一个元素底部重合
      layout_constraintStart_toEndOf 一个元素的左边缘与另一个元素右边缘重合
      layout_constraintStart_toStartOf 一个元素的左边缘与另一个元素左边缘重合
      layout_constraintEnd_toStartOf 一个元素的右边缘与另一个元素左边缘重合
      layout_constraintEnd_toEndOf 一个元素的右边缘与另一个元素右边缘重合
      layout_constraintVertical _weight 一个元素高度占父视图高度的比例
      layout_constraintHorizontal_weight 一个元素宽度占父视图宽度的比例 ,例:

    app:layout_constraintHorizontal_weight="1"
    //这个视图宽度占父视图宽度的1/n(n为子视图的个数)
    

    layout_constraintVertical _weight 一个元素高度占父视图高度的比例

    注意:这些属性的值即可以是parent,也可以是某个view的id。

    4. XML布局常见属性:

    XML布局常见属性

    相关文章

      网友评论

        本文标题:Android_XML布局

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