天天看點

Android布局——幀布局、表格布局、網格布局

前面文章有講過Android布局中常用的線性布局和相對布局,這裡學習另外三種不常用布局幀布局、表格布局、網格布局

幀布局

如上圖類似這種布局就是幀布局,後面的子元素直接覆寫在前面的子元素之上,将前面的子元素部分和全部遮擋

常用屬性

android:layout_gravity="center"//控件重力
android:gravity="center"//控件内容相對于控件本身的位置
android:foreground="@mipmap/bg"//前景
android:foregroundGravity="center_vetical"//前景重力      

案例代碼

<TextView
    android:layout_width="350dp"
    android:layout_height="350dp"
    android:background="#ff0000"
    android:layout_gravity="center"/>
<TextView
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:background="#00ff00"
    android:layout_gravity="center"
   />
<TextView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#0000ff"
    android:layout_gravity="center"
    android:text="測試内容"
    android:textColor="#ffffff"
    android:gravity="center"
    />      

效果

Android布局——幀布局、表格布局、網格布局

表格布局

通過行列的形式展示我們的控件,這樣的布局就是表格布局

Android布局——幀布局、表格布局、網格布局

常見屬性

android:stretchColumns="*"//設定可伸展的列,傳入的是整型資料,即列的索引,*代表所有,也可多個比如1,2
android:shrinkColumns="1"//可伸縮的列
android:collapseColumns="2,3"//隐藏的列      

案例代碼

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="*"
    >
    <!--
    1.直接在Tablelayout中添加控件,預設控件和父容器等寬,要讓一些控件出現在同一行,把這些控件放在TableRow
    裡面,寬度預設是内容寬度
    -->
    <EditText/>
    <TableRow>

        <Button android:text="7" />
        <Button android:text="8" />
        <Button android:text="9" />
        <Button android:text="/" />
    </TableRow>

    <TableRow>

        <Button android:text="4" />
        <Button android:text="5" />
        <Button android:text="6" />
        <Button android:text="-" />
    </TableRow>

    <TableRow>

        <Button android:text="1" />
        <Button android:text="2" />
        <Button android:text="3" />
        <Button android:text="+" />
    </TableRow>

    <TableRow>

        <Button android:text="." />
        <Button android:text="0" />
        <Button android:text="=" />
        <Button android:text="*" />
    </TableRow>
    
</TableLayout>      

網格布局

Android布局——幀布局、表格布局、網格布局

如上圖,網格布局和表格布局類似,但是網格能自身确定整個布局應該出現多少行多少列。控件放入的時候從左到右擺滿指定的列數,再從第二行開始擺放

android:orientation="horizontal"//表示控件在網格中從左到右順序擺放還是上到下的順序擺放
android:rowCount="4"//行數
android:columnCount="3"//列數
android:layout_rowSpan="2"//跨2行
android:layout_columnSpan="2"//跨2列
android:layout_gravity="fill"//填充展示      
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:rowCount="4"
    android:columnCount="3"
    >
    <Button android:text="1"/>
    <Button android:text="2"/>
    <Button android:text="3"/>
    <Button android:text="4"
        android:layout_rowSpan="2"
        android:layout_columnSpan="2"
        android:layout_gravity="fill"/>
    <Button android:text="5"/>
    <Button android:text="6"/>
    <Button android:text="7"/>
    <Button android:text="8"/>
    <Button android:text="9"/>
</GridLayout>