zoukankan      html  css  js  c++  java
  • 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); } }
  • 相关阅读:
    Flipboard web移动端-打造每秒60帧的流畅体验
    android开源代码演示项目CodeBox
    Material风格的文件管理器
    android:ToolBar详解
    GossipView:圆圈布局的自定义view
    9个完整android开源app项目
    android-波浪效果ripple-background
    Android Studio 简单介绍和使用问题小结
    ActionItemBadge:在actionbar上显示badge数字提示
    在ContentResolver中使用Group By
  • 原文地址:https://www.cnblogs.com/Yang-jing/p/3745790.html
Copyright © 2011-2022 走看看