android 布局杂谈
来源:互联网 发布:securecrt mac 中文 编辑:程序博客网 时间:2024/04/29 20:18
关于五大布局的特性可以查看下面这篇文章:http://blog.csdn.net/android_tutor/article/details/4779097
这里将讲解一些容易引起混淆的布局参数,并提供一些例子供大家参考。
1、layout_margin & padding
layout_margin:view自身的边界与外界view的距离。
padding:view自身的边界与内部元素的距离。
即layout_margin是面向外部的,而padding是面向内部的。先来看一个布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="200dip" android:layout_height="200dip" android:layout_gravity="center" android:background="#D8D8D8"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="20dip" android:padding="20dip" android:background="#81BEF7"> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#BCF5A9"/> </LinearLayout></LinearLayout>
为了更加清晰的展示layout_margin和padding的效果,将最外围的LinearLayout布局居中,且设置长宽均为200dip。
将外层LinearLayout的背景设置为 浅灰色,内层的LinearLayout背景为浅蓝色,最内层的TextView背景为浅绿色。
子元素的长宽均为充满父元素。但是用于LinearLayou设置了
android:layout_margin="20dip"
android:padding="20dip"
所以出来的效果如下图:
图中,浅灰色 的部分即为 LinearLayout 布局 android:layout_margin="20dip" 的效果,浅蓝色 的部分即为 android:padding="20dip" 的效果。
2、layout_gravity & gravity
layout_gravity:view自身相对于父元素的重力方向。
gravity:view内部子元素相对于自身的重力方向。
说起来有些抽象,看个例子就很比较清晰了。:
还是用上面的这个例子,修改内层LinearLayout 和 TextView的长宽,并添加一些内容:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="200dip" android:layout_height="200dip" android:layout_gravity="center" android:background="#D8D8D8"> <LinearLayout android:layout_width="fill_parent" android:layout_height="100dip" android:layout_margin="20dip" android:padding="20dip" android:background="#81BEF7" android:layout_gravity="center" android:gravity="right"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#BCF5A9" android:text="GRAVITY" android:textColor="#000000"/> </LinearLayout></LinearLayout>
注意内层 LinearLayout 的两行属性:
android:layout_gravity="center" //将自身放置在相对于父元素的居中位置
android:gravity="right" //将内部子元素放置在相对于自身的居右位置
效果如下图:
3、layout_weight
线性布局内子元素对未占用空间(水平或垂直)分配权重值,其值越小,权重越大,不过有前提条件。
这篇文章的后两个例子总结的很好,供大家参考:http://blog.csdn.net/trampou/article/details/5752533
其他提两个标签
<include>:重用的标签,该标签可以直接饮用已写好的布局,大大提高了布局的复用性。
<merge>:减少布局层次标签,该标签可以减少一级布局层次,优化布局结构,不过有一定的限制。
限制:1.只能用于xml layout文件的根元素;
2.在代码中inflate一个以merge为根元素的布局文件时候,你需要指定一个ViewGroup 作为其容器,并且要设置attachToRoot 为true。
将上面的布局文件用<include>标签重用起来,出来的效果就跟上面一样。绝对是布局重用的利器。
<?xml version="1.0" encoding="utf-8"?><merge xmlns:android="http://schemas.android.com/apk/res/android"> <include layout="@layout/gravity_test"/></merge>
- android 布局杂谈
- 布局杂谈(一)
- 杂谈之flex布局
- android杂谈
- Android杂谈
- Android 杂谈
- Android 杂谈
- 【Android】杂谈
- Android杂谈
- Android 杂谈
- android杂谈
- Android杂谈
- Android杂谈--Android生命周期
- Android杂谈---各种Toast
- Android杂谈---各种Toast
- android TextView杂谈
- Android杂谈--ListView优化
- Android View杂谈
- bash 中有效建立锁
- Eclipse 指定不同的workspace
- 多点耐心,再多点耐心,多点爱
- 计算指令执行时间代码
- vb.net 简单上机登陆(面向过程思维)
- android 布局杂谈
- C++字符串完全指南 - Win32字符编码(一)(前言)
- Spring设置注入和构造注入
- 打造您的 Eclipse RCP 产品
- WAS 中配置JMS Queue的注意事项
- Server Application Unavailable --The web application you are attempting to access on this web server
- Oracle 语法之 OVER (PARTITION BY ..)
- 敏捷开发之故事点估算与故事点燃尽图
- 十三、Java线程基础