Android - 布局方式学习

LinearLayout线性布局

1、线性布局方向有两个:horizontal、 vertical 默认horizontal
horizontal


image.png
horizontal

vertical


image.png
vertical

这里 layout_marginLeft相对于父视图而言,layout_marginTop 相对于上面的 button 而言(如果上面没有其他 view 那么就相对于父视图,如果有其他 view 那么就相对于离他最近的 view 来说)


image.png


    

LinearLayout 嵌套使用


image.png


    

gravity、layout_gravity的使用


image.png


    

RelativeLayout相对布局

image.png

同 LinearLayout 一样 也可以设置 gravity 来设置子视图。但是子视图无法再设置 layout_gravity



    

TableLayout表格布局

image.png

从图中可以看出TableLayout布局默认是垂直方向进行布局的,而且宽度是填充屏幕的



    

和TableRow结合使用,发现超出屏幕部分会被截掉


image.png


    
        
  • 和 TableRow 结合使用,及 collapseColumns 隐藏列("0,1,2"),stretchColumns拉伸列(3)会把设置的拉伸列把剩余的空间拉伸满。从图中也可以看出这两个属性的设置只对一行多列的情况有作用。这里还有一个情况就是设置以后如果有多行多列的情况,那么会把多行对应的列都给隐藏或拉伸.
  • 子控件的两个属性:layout_column在第几列开始显示;layout_span跨几列显示,就是宽度变成正常列宽的几倍
    设置collapseColumns = "0,1"


    image.png

    设置 stretchColumns = "2,3"


    image.png


    
        

GridLayout 网格布局

image.png

columnCount设置一行显示几列属性(用户水平布局)
rowCount 设置一列显示几行属性(用于垂直布局)



    

设置子视图:layout_row 显示在第几行;layout_column显示在第几列;layout_columnSpan横跨几列显示。
以及columnWeight列权重显示, rowWeight 行权重显示


image.png


    

FrameLayout帧布局

FrameLayout布局两个特有属性 foreground 前景色 foregroundGravity前景色位置


image.png


    

ConstraintLayout约束布局

1、使用ConstraintLayout设置 imageview 的时候需要注意,设置 srcCompat图片资源的时候,预览没问题,但是运行的时候就会看不到图片资源。因为使用ConstraintLayout,代码中使用的是 imageview,但是设置图片资源用的是 app:srcCompat。我们知道 imageview 设置图片资源的时候用的是 android:src 所以导致了加载不出来。
2、从 Android23.3 开始支持向量 drawable,只能通过 app:srcCompat进行加载了。
3、解决方案把 imageview 换成AppCompatImageView;或者 activity 继承AppCompatActivity


image.png

image.png


    

你可能感兴趣的:(Android - 布局方式学习)