在代码里面设置组件的相对位置

来源:互联网 发布:软件系统分为 编辑:程序博客网 时间:2024/05/17 03:50

有时候需要在代码里创建组件,尤其是在相对布局中需要设置组件之间的相对位置,包括组件相对父容器的位置,组件之间的位置,至于组件内部排列方式是可以用setGravity来实现的。下面针对前两种情况进行浅析,代码如下:

package com.home.testlayoutparams;import android.os.Bundle;import android.view.ViewGroup;import android.widget.Button;import android.widget.RelativeLayout;import android.app.Activity;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);RelativeLayout reLayout = new RelativeLayout(this);// 情况一:设置组件相对于父容器的位置// 按钮一Button btn1 = new Button(this);btn1.setText("按鈕1,父容器顶部水平居中");// 设置IDbtn1.setId(1);// 参数RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);// 设置额外参数规则,位于父View顶部lp1.addRule(RelativeLayout.ALIGN_PARENT_TOP);// 相对于父View水平居中lp1.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);reLayout.addView(btn1, lp1);// 情况二:同级组件之间相对位置// 按钮二Button btn2 = new Button(this);btn2.setText("按鈕2,位于按钮一的下方左对齐");RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);// 位于按钮一的下方lp2.addRule(RelativeLayout.BELOW, 1);// 相对于按钮一左对齐lp2.addRule(RelativeLayout.ALIGN_LEFT, 1);reLayout.addView(btn2, lp2);setContentView(reLayout);}}


注:上面的addRule(verb, anchor)方法,verb指定相对的“动作”或“行为”。anchor指定相对于“谁”。

1、如果是相对于父容器的话,anchor参数可以不要直接使用addRule(verb)。或者设置RelativeLayout.TRUE(它的值就是-1)。

2、如果是相对于同级控件的话,anchor参数为那个要相对的控件的ID。

3、如果anchor参数为0的话,表示这个规则不会运用到该控件的布局中。

另外将其余verb相关常量名列出:

relLayoutParams.alignWithParent=true  如果对应的兄弟元素找不到的话就以父元素做参照物

RelativeLayout.CENTER_HORIZONTAL   在父控件中水平居中

RelativeLayout.CENTER_VERTICAL   在父控件中垂直居中

RelativeLayout.CENTER_IN_PARENT  相对于父控件完全居中

RelativeLayout.ALIGN_PARENT_BOTTOM  紧贴父控件的下边缘

RelativeLayout.ALIGN_PARENT_TOP  紧贴父控件的上边缘

RelativeLayout.ALIGN_PARENT_LEFT紧贴父控件的左边边缘

RelativeLayout.ALIGN_PARENT_RIGHT  紧贴父控件的右边缘

 

RelativeLayout.ABOVE 在某元素的上方  需要第二个参数为某元素的ID

RelativeLayout.BELOW 在某元素的下方 需要第二个参数为 某元素的ID

RelativeLayout.LEFT_OF 在某元素的左边 需要第二个参数为某元素的ID

RelativeLayout.RIGHT_OF  在某元素的右边 需要第二个参数为 某元素的ID

RelativeLayout.ALIGN_TOP 本元素的上边缘和某元素的的上边缘对齐 需要第二个参数为某元素的ID

RelativeLayout.ALIGN_BOTTOM 本元素的上边缘和某元素的的下边缘对齐 需要第二个参数为某元素的ID

RelativeLayout.ALIGN_LEFT  本元素的上边缘和某元素的的左边缘对齐 需要第二个参数为某元素的ID

RelativeLayout.ALIGN_RIGHT  本元素的上边缘和某元素的的右边缘对齐 需要第二个参数为某元素的ID

RelativeLayout.ALIGN_BASELINE   本元素的基线和某元素的的基线对齐 需要第二个参数为某元素的ID

 

1 0
原创粉丝点击