Android 的 RelativeLayout 可以指定子視圖如何彼此相對定位。每個(gè)視圖的位置可以被指定為相對于同級元素或相對于父視圖。
以下是RelativeLayout 具體的屬性:
屬性 | 描述 |
---|---|
android:id | 這是布局的唯一標(biāo)識ID。 |
android:gravity | 這指定對象應(yīng)該如何定位它的內(nèi)容,無論是X軸和Y軸??赡艿闹凳莟op, bottom, left, right, center, center_vertical, center_horizontal等。 |
android:ignoreGravity | 這表示什么視圖應(yīng)該不受到重力影響。 |
使用RelativeLayout可以調(diào)整兩個(gè)元素右邊界或使一個(gè)下面跟著另一個(gè)視圖,居中于屏幕上,中心,左側(cè)等等。默認(rèn)情況下,所有子視圖都在左上角的布局,所以必須定義使用RelativeLayout.LayoutParams和一些重要屬性的布局屬性,每個(gè)視圖的位置如下給出:
屬性 | 描述 |
---|---|
android:layout_above | 位置上面給定錨點(diǎn)視圖ID此視圖的底部邊緣,必須引用另一個(gè)資源,在形式 "@[+][package:]type:name" |
android:layout_alignBottom | 使得此視圖的底部邊緣匹配給定的錨點(diǎn)視圖ID的底邊和必須是引用到另一個(gè)資源,在形式 "@[+][package:]type:name". |
android:layout_alignLeft | 使得此視圖的左邊緣匹配給定的錨點(diǎn)視圖ID的左邊緣,并且必須是一個(gè)參考到另一個(gè)資源,在形式 "@[+][package:]type:name". |
android:layout_alignParentBottom | 如果為true,使得此視圖的底邊緣相匹配的父的底部邊緣。必須是一個(gè)布爾值,要么“true”或“false”。 |
android:layout_alignParentEnd | 如果為true,使得此視圖的端部邊緣相匹配的父的端部邊緣。必須是一個(gè)布爾值,要么“true”或“false”。 |
android:layout_alignParentLeft | 如果為true,使得此視圖的左邊緣匹配父的左邊緣。必須是一個(gè)布爾值,要么“true”或“false”。 |
android:layout_alignParentRight | 如果為true,使得此視圖的右邊緣匹配父的右邊緣。必須是一個(gè)布爾值,要么“true”或“false”。 |
android:layout_alignParentStart | 如果為true,使得此視圖開始邊緣匹配父的開始邊緣。必須是一個(gè)布爾值,要么“true”或“false”。 |
android:layout_alignParentTop | 如果為true,使得此視圖的頂部邊緣相匹配的父的頂部邊緣。必須是一個(gè)布爾值,要么“true”或“false”。 |
android:layout_alignRight | 使得此視圖的右邊緣匹配給定的錨點(diǎn)視圖ID的右邊緣,并且必須是一個(gè)引用另一個(gè)資源,在形式 "@[+][package:]type:name". |
android:layout_alignStart | 使得此視圖開始邊緣的匹配給定的錨點(diǎn)視圖ID開始邊緣,必須引用另一個(gè)資源,在表格 "@[+][package:]type:name". |
android:layout_alignTop | 使得此視圖的頂部邊緣匹配給定的錨點(diǎn)視圖ID的頂邊緣,并且必須是一個(gè)引用到另一個(gè)資源,在形式 "@[+][package:]type:name". |
android:layout_below | 定位此視圖低于給定錨點(diǎn)視圖ID的頂邊緣,并且必須是一個(gè)引用到另一個(gè)資源,在形式 "@[+][package:]type:name". |
android:layout_centerHorizontal | 如果為true,中心這個(gè)子視圖水平在其父之內(nèi)。必須是一個(gè)布爾值,要么“true”或“false”。 |
android:layout_centerInParent | 如果為true,使此子視圖中心水平和垂直其父之內(nèi)。必須是一個(gè)布爾值,要么“true”或“false”。 |
android:layout_centerVertical | 如果為true,該中心子垂直在其父之內(nèi)。必須是一個(gè)布爾值,要么“true”或“false”。 |
android:layout_toEndOf | 此視圖給定錨點(diǎn)視圖ID結(jié)束邊緣位置,必須引用另一個(gè)資源,在格式 "@[+][package:]type:name". |
android:layout_toLeftOf | 此視圖給定錨點(diǎn)視圖ID的左邊的右邊位置,必須做個(gè)參考其他資源,在形式 "@[+][package:]type:name". |
android:layout_toRightOf | 定位此視圖為給定的錨點(diǎn)視圖ID的右左邊緣和必須是引用到另一個(gè)資源,在形式 "@[+][package:]type:name". |
android:layout_toStartOf | 定位此視圖為給定的錨點(diǎn)視圖ID的開始的端部邊緣,并且必須是一個(gè)引用到另一個(gè)資源,在形式 "@[+][package:]type:name". |
這個(gè)例子將通過簡單的步驟顯示了如何創(chuàng)建Android應(yīng)用程序使用相對布局。按照下面的步驟來創(chuàng)建Android應(yīng)用程序示例:
步驟 | 描述 |
---|---|
1 | 使用Eclipse IDE創(chuàng)建Android應(yīng)用程序,在包 com.yiibai.relativelayout 下創(chuàng)建一個(gè)應(yīng)用示例項(xiàng)目:RelativeLayout |
2 | 修改 res/layout/activity_main.xml 文件的默認(rèn)內(nèi)容以包括幾個(gè)部件在相對布局。 |
3 | 定義所需的常量在 res/values/strings.xml 文件中 |
4 | 運(yùn)行該應(yīng)用程序后啟動Android模擬器并驗(yàn)證應(yīng)用程序的結(jié)果。 |
以下是內(nèi)容修改主activity文件 src/com.yiibai.helloworld/MainActivity.java。這個(gè)文件可以包括每個(gè)生命周期的基本方法。
package com.example.helloworld; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import android.os.Bundle; import android.app.Activity; import android.text.format.DateFormat; import android.view.Menu; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); Date date = new Date(); String nowDate = dateFormat.format(date); TextView dateView = (TextView)findViewById(R.id.dates); dateView.setText(nowDate); SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); String nowTime = timeFormat.format(date); TextView timeView = (TextView)findViewById(R.id.times); timeView.setText(nowTime); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; getMenuInflater().inflate(R.menu.main, menu); return true; } }
res/layout/activity_main.xml 文件的內(nèi)容如下: