通过RelativeLayout.LayoutParams.addRule()方法在代码中设置RelativeLayout相关属性
2016-01-17 19:34
441 查看
我们知道,在 RelativeLayout 布局中有很多特殊的属性,通常在载入布局之前,在相关的xml文件中进行静态设置即可。
但是,在有些情况下,我们需要动态设置布局的属性,在不同的条件下设置不同的布局排列方式,这时候就需要用到 RelativeLayout.LayoutParams.addRule() 方法,该方法有两种重载方式:
addRule(int verb) :用此方法时,所设置节点的属性不能与其它兄弟节点相关联或者属性值为布尔值(布尔值的属性,设置时表示该属性为 true,不设置就默认为 false),比如:addRule(RelativeLayout.CENTER_VERTICAL) 就表示在 RelativeLayout 中的相应节点是垂直居中的。
addRule(int verb, int anchor) :该方法所设置节点的属性必须关联其它的兄弟节点或者属性为布尔值( 属性为布尔值时,anchor 为 RelativeLayout.TRUE 表示 true,anchor 为0表示 false),比如:addRule(RelativeLayout.ALIGN_LEFT, R.id.date) 就表示 RelativeLayout 中的相应节点放置在一个 id 值为 date 的兄弟节点的左边。
附:
代码生成ID的方法:
[/code]
但是,在有些情况下,我们需要动态设置布局的属性,在不同的条件下设置不同的布局排列方式,这时候就需要用到 RelativeLayout.LayoutParams.addRule() 方法,该方法有两种重载方式:
addRule(int verb) :用此方法时,所设置节点的属性不能与其它兄弟节点相关联或者属性值为布尔值(布尔值的属性,设置时表示该属性为 true,不设置就默认为 false),比如:addRule(RelativeLayout.CENTER_VERTICAL) 就表示在 RelativeLayout 中的相应节点是垂直居中的。
addRule(int verb, int anchor) :该方法所设置节点的属性必须关联其它的兄弟节点或者属性为布尔值( 属性为布尔值时,anchor 为 RelativeLayout.TRUE 表示 true,anchor 为0表示 false),比如:addRule(RelativeLayout.ALIGN_LEFT, R.id.date) 就表示 RelativeLayout 中的相应节点放置在一个 id 值为 date 的兄弟节点的左边。
附:
代码生成ID的方法:
/**
* An {@code int} value that may be updated atomically.
*/
private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1);
/**
* 动态生成View ID
* API LEVEL 17 以上View.generateViewId()生成
* API LEVEL 17 以下需要手动生成
*/
public static int generateViewId() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
for (; ; ) {
final int result = sNextGeneratedId.get();
// aapt-generated IDs have the high byte nonzero; clamp to the range under that.
int newValue = result + 1;
if (newValue > 0x00FFFFFF) newValue = 1; // Roll over to 1, not 0.
if (sNextGeneratedId.compareAndSet(result, newValue)) {
return result;
}
}
} else {
return View.generateViewId();
}
}
[/code]
相关文章推荐
- RedHat 7.0 下 FTP 服务的安装,启动,配置,以及虚拟用户的建立
- Could not generate CGLIB subclass of class编译时出错
- 【Akka】Akka入门编程实例
- Google Java编程库Guava介绍
- 5、数组
- java String 类的基本方法
- PHPExcel探索之旅---阶段一
- javaweb多工程相互引用
- Caught exception while loading file struts-default.xml - [unknown ]
- matlab r2010b netcdf 工具箱 安装方法
- javac 不是内部或外部命令
- python--函数式编程--9
- C++学习笔记29,引用变量(1)
- C++成员变量的初始化顺序问题
- Qt5 取消了QTextCodec::setCodecForTr()和QTextCodec::setCodecForCString()这两个函数。
- 5 Maven-依赖详解
- 关于获取Java的调用栈的实现
- C/C++中常出现的#ifndef,#define,#endif解析
- eclipse 插件安装问题
- 随机森林算法的简单总结及python实现