1. 程式人生 > >android的相對佈局和網格佈局

android的相對佈局和網格佈局

案例一:相對佈局

  1. 相對佈局(重點)
    1.1 相對佈局視窗內子元件的位置總是相對兄弟元件、父容器來決定的,因此叫相對佈局

1.2 如果A元件位置是由B元件的位置決定的,Android要求先定B元件,再定義A元件
如果A元件位置是由B元件的位置決定的,Android要求先定B元件,再定義A元件
如果A元件位置是由B元件的位置決定的,Android要求先定B元件,再定義A元件

  注1:注意XML中元件的順序,不然會報錯
  注2:android新版本中元件的定義順序沒有關係

1.3 RelativeLayout支援的二個xml屬性
1.3.1 android:gravity :設定該佈局容器內各子元件的對齊方式
1.3.2 android:ignoreGravity:設定哪個元件不受gravity屬性的影響

1.4 控制子元件佈局的內部類RalativeLayout.LayoutParams
此內部類的屬性分二類
1.4.1 boolean
相對父元素
alignParent…
center…(只有在父元素中才存在水平或垂直居中等)
1.4.2 id型
@+id和@id的區別
@+id/x1(新增新ID)
@id/x1(引用此ID)
相對於指定元素(根據ID指定)
1.5 layout_toRightOf,layout_toLeftOf(是一種靠攏動作)

圖例:
在這裡插入圖片描述

//相對佈局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="200dp"
    android:layout_height="200dp"
    tools:context=".Main3Activity">

   <Button
       android:layout_width="wrap_content"

       android:layout_height="wrap_content"
       android:text="按鈕1"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_height="wrap_content"
        android:text="按鈕2"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="按鈕3"/>


    <Button
        android:layout_width="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_height="wrap_content"
        android:text="按鈕4"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_height="wrap_content"
        android:text="按鈕5"/>

</RelativeLayout>

案例二:網格佈局
–4的跨行出現的問題,因為4的向下沒有東西攔住了
2. 網格佈局
2.1 常用屬性
GridLayout佈局相關屬性:rowCount //表格的行數
columnCount//表格的列
GridLayout中子控制元件相關屬性:layout_gravity=“fill_horizontal|fill_vertical”

2.2 Space標籤的作用:擋住控制元件,讓其不超出網格的範圍

圖例:
在這裡插入圖片描述

//網格佈局做的計算器
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:rowCount="5"
    android:columnCount="4"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Main3Activity">

   <Button
       android:layout_width="wrap_content"

       android:layout_height="wrap_content"
       android:text="1"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2"/>



    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="3"/>


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="/"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="4"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="5"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="6"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="*"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="7"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="8"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="9"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_gravity="fill_horizontal"
        android:layout_columnSpan="2"
        android:layout_height="wrap_content"
        android:text="0"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="."/>
    <Button
        android:layout_width="wrap_content"
        android:layout_rowSpan="2"
        android:layout_gravity="fill_vertical"
        android:layout_height="wrap_content"
        android:text="+"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_gravity="fill_horizontal"
        android:layout_columnSpan="3"
        android:layout_height="wrap_content"
        android:text="="/>
<Space />
</GridLayout>