在代码里面设置组件的相对位置
2014-01-07 17:32
253 查看
有时候需要在代码里创建组件,尤其是在相对布局中需要设置组件之间的相对位置,包括组件相对父容器的位置,组件之间的位置,至于组件内部排列方式是可以用setGravity来实现的。下面针对前两种情况进行浅析,代码如下:
注:上面的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
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 { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RelativeLayout reLayout = new RelativeLayout(this); // 情况一:设置组件相对于父容器的位置 // 按钮一 Button btn1 = new Button(this); btn1.setText("按鈕1,父容器顶部水平居中"); // 设置ID btn1.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
相关文章推荐
- 代码中动态设置相对布局里控件的位置
- LinearLayout, RelativeLayout,代码(动态)设置布局位置(线性布局,相对布局)
- 代码设置RelativeLayout相对位置设置
- 动态代码中设置控件相对位置
- 如何将当前界面的可视组件以同样的相对位置和大小保存在png图像文件中?要求写出实践的代码。
- 代码中设置view的大小和位置
- 代码里面设置布局颜色以及背景图片
- 在代码中手动设置图片相对于TextView的位置
- 如何让两个元素的相对位置不变,设置css
- 如何把图片代码设置成居中的位置?
- Canvas 设置里面的元素位置
- Unity3D-在代码中设置RectTransform的锚点、位置
- 设置WPF窗口相对于非WPF窗口的位置
- 怎么动态设置GridLayout里面的组件间距和大小?
- 设置布局的几种方式与在代码中创建组件
- Android设置图片和文本相对位置
- Android 相对布局中的 代码中修改属性与布局文件的设置不同的解决方法
- 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。
- 如何用代码设置滚动条的位置?
- EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码