Relative布局简介

相对布局的组件是由兄弟组件和父组价决定的,因此这种布局被称为相对布局。

属性设置介绍

RelativeLayout.Layoutparam中只能设置为true和false的属性是:



需要依赖其他组件Id设置的属性:





除此之外,RelativeLayout还可以使用viewGroup.MarginLayoutparams的属性。

梅花布局的实例

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:orientation="vertical">
   <RelativeLayout
       android:layout_width="fill_parent"
       android:layout_height="fill_parent">
       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:background="@drawable/ic_launcher"
           android:id="@+id/view01"
           android:layout_centerInParent="true"/>
       <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:background="@drawable/ic_launcher"
       android:layout_below="@id/view01"
       android:layout_alignLeft="@id/view01"/>
       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:background="@drawable/ic_launcher"
           android:layout_above="@id/view01"
           android:layout_alignLeft="@id/view01"/>
       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:background="@drawable/ic_launcher"
           android:layout_toLeftOf="@id/view01"
           android:layout_alignTop="@id/view01"/>
       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:background="@drawable/ic_launcher"
           android:layout_toRightOf="@id/view01"
           android:layout_alignTop="@id/view01"/>
       </RelativeLayout>
</LinearLayout>

表格布局

GridLayout是4.0以后才加入的布局,把这个空间分成rows*columns个格子,一个组件可以设置横跨多少列和多少行。

gridLayout的属性

常用属性:



GridLayout.Layoutparam的属性:

计算器界面的实例

package peng.liu.testview;

import android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.TextView;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends Activity {
    GridLayout grid = null;
    String[] chars = new String[]{
            "7","8","9","/",
            "4","5","6","*",
            "1","2","3","-",
            ".","0","+","+"
    };
    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        grid = (GridLayout) findViewById(R.id.root);
        for (int i=0;i<chars.length;i++){
            Button button = new Button(this);
            button.setText(chars[i]);
            button.setTextSize(40);
            GridLayout.Spec rowSpec = GridLayout.spec(i / 4 + 2);
            GridLayout.Spec columnSpec = GridLayout.spec(i%4);
            GridLayout.LayoutParams params = new GridLayout.LayoutParams(rowSpec,columnSpec);
            params.setGravity(Gravity.FILL);
            grid.addView(button,params);
        }
    }
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:orientation="vertical">
   <GridLayout
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:id="@+id/root"
       android:rowCount="6"
       android:columnCount="4">
       <TextView
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_columnSpan="4"
           android:layout_marginLeft="4px"
           android:layout_marginRight="4px"
           android:padding="5px"
           android:textSize="50sp"
           android:layout_gravity="right"
           android:background="#eee"
           android:textColor="#000"
           android:text="0"
           />
       </GridLayout>
</LinearLayout>

效果图

绝对布局

因为绝对布局,需要亲自设置组件的x位置,和y位置,所以一定程度上已经过时了。

属性

android:layout_x:设置组件的z坐标

android:layout_y:设置组件的Y坐标

可以这么说相对布局已经过时了~

距离单位介绍

android布局Relative和gridLayout-android学习之旅(十六)的更多相关文章

  1. Nodejs学习笔记(十六)--- Pomelo介绍&入门

    目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...

  2. Nodejs学习笔记(十六)—Pomelo介绍&入门

    前言&介绍 Pomelo:一个快速.可扩展.Node.js分布式游戏服务器框架 从三四年前接触Node.js开始就接触到了Pomelo,从Pomelo最初的版本到现在,总的来说网易出品还算不错 ...

  3. 我的MYSQL学习心得(十六) 优化

    我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  4. python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码

    python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...

  5. 深度学习(二十六)Network In Network学习笔记

    深度学习(二十六)Network In Network学习笔记 Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/deta ...

  6. 风炫安全web安全学习第三十六节课-15种上传漏洞讲解(一)

    风炫安全web安全学习第三十六节课 15种上传漏洞讲解(一) 文件上传漏洞 0x01 漏洞描述和原理 文件上传漏洞可以说是日常渗透测试用得最多的一个漏洞,因为用它获得服务器权限最快最直接.但是想真正把 ...

  7. Android学习笔记(十六)——数据库操作(上)

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper帮助类, ...

  8. Android的ViewAnimator及其子类ViewSwitcher-android学习之旅(三十三)

    ViewAnimator继承了FrameLayout,多个组件重合在一起,可以加入多个组件,然后切换的时候会有动画. ViewAnimator及其子类的继承关系 ViewAnimator常用属性 Vi ...

  9. 开发了5年android,我开始了go学习之旅

    前言 做了近5年的android开发,最近项目也是不怎么忙,空闲的时候总会思考一些事情,不过作为移动开发,我个人觉得很有必要学习后台开发,由于公司是Go语言开发的,了解go语言一段时间后,我发现go语 ...

随机推荐

  1. 51Nod 1753 相似子串

    题目大意: 两个字符串相似定义为: 1.两个字符串长度相等 2.两个字符串对应位置上有且仅有至多一个位置所对应的字符不相同 给定一个字符串,每次询问两个子串在给定的规则下是否相似.给定的规则指每次给出 ...

  2. APIO2017 懵逼记

    Day -1: 移步http://www.cnblogs.com/juruolty/p/6854795.html Day 0: CTSC铁牌后,下一个就是APIO了. lmy,sxy,cxc,lh过来 ...

  3. python中str常用操作

    1. 字符串的操作 字符串的连接操作 符号: + 格式:str1 + str2 例如:str1 = 'I Love' str2 = 'You!' print(str1 + str2) >> ...

  4. 华科机考:N阶楼梯上楼

    时间限制:1秒空间限制:32768K 题目描述 N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入描述: 输入包括一个整数N,(1<=N<90). 输出描 ...

  5. Python中list的功能介绍

    List的功能介绍 1. 列表的两种方法 1. 列表的内置方法 列表的相加 格式:x.__add__(y)等同于x+y 例如:list1 = [1,2,3] print(list1.__add__([ ...

  6. ELK 6.2.4搭建

    开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成.官方网站:https://www.elastic.co/p ...

  7. 查询优化--小表驱动大表(In,Exists区别)

    Mysql 系列文章主页 =============== 本文将以真实例子来讲解小表驱动大表(In,Exists区别) 1 准备数据 1.1 创建表.函数.存储过程 参照  这篇(调用函数和存储过程批 ...

  8. JavaScript数据结构和算法----栈

    前言 栈是一种遵循后进先出(LIFO)原则的有序集合,新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另外一端就叫栈底.在栈里,新元素都靠近栈顶,旧元素都接近栈底.可以想象桌上的一叠书,或者厨房里的 ...

  9. React-报错Warning:setState(...)on anunmounted component

    一.原因        这种错误一般出现在react组件已经从DOM中移除.我们在react组件中发送一些异步请求的时候,就可能会出现这样的问题.举个例子,我们在componentWillMount中 ...

  10. CentOS7 YUM 安装NGINX

    1.先添加源: nano /etc/yum.repos.d/nginx.repo 把下边这段代码添加到nginx.repo中去.[nginx] name=nginx repo baseurl=http ...