Android 自学之相对布局 RelativeLayout
相对布局(RelativeLayout),相对布局容器内子组件的位置总是相对兄弟组件、父容器来决定的。
RelativeLayout的XML属性及相关方法说明
XML属性 | 相关方法 | 说明 |
android:gravity | setGravity(int) | 设置该布局容器内部各子组件的对齐方式 |
android:ignoreGravity | setIgnoreGravity(int) | 设置那个组件不受Gravity的影响 |
RelativeLayout.LayoutParams里只能设为boolean值的属性:
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
RelativeLayout.LayoutParams里只能设为其他UI组件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 本元素的右边缘和某元素的的右边缘对齐
除了这些,RelativeLayout.LayoutParams还继承了android.view.ViewGroup.MarginLayoutParams,所以RelativeLayout布局容器中每个组件也可以指定android.view.ViewGroup.MarginLayoutParams所支持的XML属性。
下面有个用相对布局编写的范例:
layout/main.xml
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent"> 5 6 <!-- 定义该组件位于父容器中间 --> 7 <TextView android:id="@+id/view01" 8 android:layout_width="wrap_content" 9 android:layout_height="wrap_content"10 android:background="@drawable/leaf"11 android:layout_centerInParent="true"/><!-- 组件居中:android:layout_centerInParent="true" -->12 13 <!-- 定义该组件位于view01组件的上方 -->14 <TextView 15 android:id="@+id/view02"16 android:layout_width="wrap_content" 17 android:layout_height="wrap_content" 18 android:background="@drawable/leaf"19 android:layout_above="@id/view01" 20 android:layout_alignLeft="@id/view01"21 />22 <!-- 定义该组件位于view01组件的下方 -->23 <TextView 24 android:id="@+id/view03"25 android:layout_width="wrap_content" 26 android:layout_height="wrap_content" 27 android:background="@drawable/leaf"28 android:layout_below="@id/view01"29 android:layout_alignLeft="@id/view01"30 />31 <!-- 定义该组件位于view01组件的左边 -->32 <TextView 33 android:id="@+id/view04"34 android:layout_width="wrap_content" 35 android:layout_height="wrap_content" 36 android:background="@drawable/leaf"37 android:layout_toLeftOf="@id/view01"38 android:layout_alignTop="@id/view01"39 />40 <!-- 定义该组件位于view01组件的右边 -->41 <TextView 42 android:id="@+id/view05"43 android:layout_width="wrap_content" 44 android:layout_height="wrap_content" 45 android:background="@drawable/leaf"46 android:layout_toRightOf="@id/view01"47 android:layout_alignTop="@id/view01"48 /> 49 50 </RelativeLayout>
com.example.relativelayouttest.MainActivity.java主程序
package com.example.relativelayouttest;import android.support.v7.app.ActionBarActivity;import android.support.v7.app.ActionBar;import android.support.v4.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.os.Build;public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
//setPadding相当于css里面的padding findViewById(R.id.view01).setPadding(5, 5 , 5 , 5); findViewById(R.id.view02).setPadding(5, 5 , 5 , 5); findViewById(R.id.view03).setPadding(5, 5 , 5 , 5); findViewById(R.id.view04).setPadding(5, 5 , 5 , 5); findViewById(R.id.view05).setPadding(5, 5 , 5 , 5); }}
更多相关文章
- Android SwipeRefreshLayout 下拉刷新组件的使用
- Android桌面组件widget与快捷方式shortcut
- android 基础知识 四大组件之Activity(一)
- Android 桌面组件【widget】 初学
- android:四大组件
- 【 Android 10 四大组件 】系列 -- Activity 的 "启动流程"
- Android学习笔记九:基本视图组件:Spinner
- Android系列教程之九:GridView组件的使用