Android基础篇 RelativeLayout.LayoutParams

Posted 彭老希

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android基础篇 RelativeLayout.LayoutParams相关的知识,希望对你有一定的参考价值。

一、前言

RelativeLayout.LayoutParams是一个RelativeLayout的布局参数

(1) 初始化

// 包裹内容 WRAP_CONTENT
RelativeLayout.LayoutParams layoutParams = new  RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);

// 全部内容 MATCH_PARENT
RelativeLayout.LayoutParams layoutParams = new  RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);

(2)参数
new RelativeLayout.LayoutParams()需要填写宽度和高度两个参数

二、方法属性

(1)addRule方法

addRule方法是我们最常用到的,动态设置控件的位置是一定要使用这个方法的。这个方法有两种方式

addRule(int verb) / addRule(int verb, int subject)

verb主要的参数有:

  • ABOVE 上面 | 之上
  • ALIGN_BASELINE 对齐 排列 对准 : 基线
  • ALIGN_BOTTOM 对齐 :底部
  • ALIGN_END 对齐末端/右边
  • ALIGN_LEFT 对齐左边
  • ALIGN_PARENT_BOTTOM 将子项的【底边】与其RelativeLayout【父项的底边】对齐的规则
  • ALIGN_PARENT_END 将子项的【末端边缘】与其RelativeLayout【父项的末端】边缘对齐的规则
  • ALIGN_PARENT_LEFT 将孩子的【左边缘】与其RelativeLayout【父对象的左边缘】对齐的规则
  • ALIGN_PARENT_RIGHT 将孩子的【右边缘】与其RelativeLayout【父对象的右边缘】对齐的规则
  • ALIGN_PARENT_START 将孩子的【起始边缘】与其RelativeLayou【t父对象的起始边缘】对齐的规则
  • ALIGN_PARENT_TOP 使子项的上边缘与其RelativeLayout父项的上边缘对齐的规则
  • ALIGN_RIGHT 将孩子的右边缘与另一个孩子的右边缘对齐的规则
  • ALIGN_START 将一个孩子的起始边缘与另一个孩子的起始边缘对齐的规则
  • ALIGN_TOP 将孩子的上边缘与另一个孩子的上边缘对齐的规则
  • BELOW 将孩子的上边缘与另一个孩子的下边缘对齐的规则
  • CENTER_HORIZONTAL 使子级相对于其RelativeLayout父级的边界水平居中的规则
  • CENTER_IN_PARENT 使子项相对于其RelativeLayout父项的边界居中的规则
  • CENTER_VERTICAL 使子项相对于其RelativeLayout父项的边界垂直居中的规则
  • END_OF 将孩子的起始边缘与另一个孩子的终止边缘对齐的规则
  • LEFT_OF 将孩子的右边缘与另一个孩子的左边缘对齐的规则
  • RIGHT_OF 将孩子的左边缘与另一个孩子的右边缘对齐的规则
  • START_OF 将孩子的末端边缘与另一个孩子的起始边缘对齐的规则
  • TRUE 为真

subject参数是我们另外的控件ID。

setMargins(int left, int top, int right, int bottom)
当前控件设置边距,参数分别是左边,上边,右边,下边。单位是px。

setMarginStart(int start)
当前控件设置开始边距,国内默认是左边的边距,单位是px。

setMarginEnd(int end)
当前控件设置结束边距,国内默认是右边的边距,单位是px。

dp值转换方法

public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

参考例子:

   RelativeLayout.LayoutParams params = new  RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
   		//参数一 传入位置值   参数二:参照物的id值
        params .addRule(RelativeLayout.ABOVE,mTextView.getId());
       // params .setMargins(0,dip2px(context,10),0,0);
       // params .setMargins(0,dip2px(context,50),0,0);
        mViewPager.setLayoutParams(params );

以上是关于Android基础篇 RelativeLayout.LayoutParams的主要内容,如果未能解决你的问题,请参考以下文章

Android开发基础之布局管理器RelativeLayout

幻化万千戏红尘qianfeng-Android-Day02-RelativeLayout布局TextViewEditTextimageView基础学习

Android零基础入门第28节:轻松掌握RelativeLayout相对布局

Android 相对布局RelativeLayout的基础

Android 布局系列篇

进阶篇-用户界面:3.android中的基本布局-layout