精华内容
下载资源
问答
  • 一、前言 ...RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); // 全部内容 M

    一、前言

    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 );
    
    展开全文
  • 但是,在有些情况下,我们需要动态设置布局的属性,在不同的条件下设置不同的布局排列方式,这时候就需要用到 RelativeLayout.LayoutParams.addRule() 方法,该方法有两种重载方式: 首先初始化: RelativeLayout....

    我们知道,在 RelativeLayout 布局中有很多特殊的属性,通常在载入布局之前,在相关的xml文件中进行静态设置即可。

    但是,在有些情况下,我们需要动态设置布局的属性,在不同的条件下设置不同的布局排列方式,这时候就需要用到 RelativeLayout.LayoutParams.addRule() 方法,该方法有两种重载方式:
    首先初始化: RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) mBottomLayout.getLayoutParams();

    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 的兄弟节点的左边。

    若想修改xml中的某一属性 需要先删除 使用 lp.removeRule();方法

    最后对应布局.setLayoutParams(lp)注入添加的属性

    展开全文
  • 那么我们就需要使用到RelativeLayout.LayoutParamsRelativeLayout.LayoutParams RelativeLayout.LayoutParams是一个RelativeLayout的布局参数,我们改变控件的就需要使用到。 初始化 // 包裹内容 Rel...

    前言

    在日常的Android开发当中,我们少不了需要动态改变控件在RelativeLayout界面的位置。那么我们就需要使用到RelativeLayout.LayoutParams。

    RelativeLayout.LayoutParams

    RelativeLayout.LayoutParams是一个RelativeLayout的布局参数,我们改变控件的就需要使用到。

    初始化

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

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

    addRule方法

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

    addRule(int verb)

    verb主要的参数有:

    • ABOVE
    • ALIGN_BASELINE
    • ALIGN_BOTTOM
    • ALIGN_END
    • ALIGN_LEFT
    • ALIGN_PARENT_BOTTOM
    • ALIGN_PARENT_END
    • ALIGN_PARENT_LEFT
    • ALIGN_PARENT_RIGHT
    • ALIGN_PARENT_START
    • ALIGN_PARENT_TOP
    • ALIGN_RIGHT
    • ALIGN_START
    • ALIGN_TOP
    • BELOW
    • CENTER_HORIZONTAL
    • CENTER_IN_PARENT
    • CENTER_VERTICAL
    • END_OF
    • LEFT_OF
    • RIGHT_OF
    • START_OF
    • TRUE

    addRule(int verb, int subject)

    verb主要的参数有:

    • ABOVE
    • ALIGN_BASELINE
    • ALIGN_BOTTOM
    • ALIGN_END
    • ALIGN_LEFT
    • ALIGN_PARENT_BOTTOM
    • ALIGN_PARENT_END
    • ALIGN_PARENT_LEFT
    • ALIGN_PARENT_RIGHT
    • ALIGN_PARENT_START
    • ALIGN_PARENT_TOP
    • ALIGN_RIGHT
    • ALIGN_START
    • ALIGN_TOP
    • BELOW
    • CENTER_HORIZONTAL
    • CENTER_IN_PARENT
    • CENTER_VERTICAL
    • 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。

    总结

    上述的内容是我阅读RelativeLayout.LayoutParams的源码结合实际开发经常用到的方法笔记。希望对看到这篇博客的小伙伴们有帮助。

    展开全文
  • Button btn1;btn1.setId(1001);int width; // layout width;int btnWidth; // btn width;int btnHeight;...…….RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(btnWidth, btnHeight...

    Button btn1;

    btn1.setId(1001);

    int width;   // layout width;

    int btnWidth; // btn width;

    int btnHeight; // btn height;

    …….

    RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(btnWidth, btnHeight);

    p.addRule(RelativeLayout.ALIGN_PARENT_TOP);

    p.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);

    p.topMargin = config.topMargin;

    // 这里必须设置,否则依赖这个左右对齐的控件无法对齐。

    //   如果不设置,只使用水平居中的属性,则1001这个控件的leftmargin为0. 导致左右对齐失败

    p.leftMargin = (width-btnWidth)/2;

    //

    Button btn2;

    RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(btnWidth, btnHeight);

    p.addRule(RelativeLayout.ALIGN_PARENT_TOP);

    p.addRule(RelativeLayout.ALIGN_LEFT, 1001); // 这里要想生效必须,1001这个控件必须添加leftmargin.

    p.topMargin = config.topMargin;

    //

    Button btn3;

    RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(btnWidth, btnHeight);

    p.addRule(RelativeLayout.ALIGN_PARENT_TOP);

    // 这里要想生效必须,1001这个控件必须添加leftmargin/right margin.

    p.addRule(RelativeLayout.ALIGN_RIGHT, 1001);

    p.topMargin = config.topMargin;

    原文:http://www.cnblogs.com/feitianlee/p/3944800.html

    展开全文
  • RelativeLayout.LayoutParams学习与运用

    千次阅读 2017-02-23 15:11:25
    1、了解LayoutParams其实...LinearLayout对应LinearLayout.LayoutParams,RelativeLayout对应RelativeLayout.LayoutParams。我们在XML中写的大多数属性,在代码中通过LayoutParams同样可以操作界面布局。下面以
  • LayoutParams的属性:int height、int width。 MarginLayoutParams的属性:int leftMargin、int topMargin、int ... RelativeLayout.LayoutParams的属性:自己特有的一些属性,RelativeLayout有boolean al...
  • 但是,在有些情况下,我们需要动态设置布局的属性,在不同的条件下设置不同的布局排列方式,这时候就需要用到 RelativeLayout.LayoutParams.addRule() 方法,该方法有两种重载方式; addRule(int v
  •  但是,在有些情况下,我们需要动态设置布局的属性,在不同的条件下设置不同的布局排列方式,这时候就需要用到 RelativeLayout.LayoutParams.addRule() 方法,该方法有两种重载方式: addRu
  • 源码里看下就知道了。。 -1不代表宽度,代表MATCH_PARENT常量的值public static final int FILL_PARENT = -1;public static final int MATCH_PARENT = -1;public static final int WRAP_CONTENT = -2;
  • RelativeLayout.LayoutParams.addRule()方法

    万次阅读 2014-09-04 14:51:27
    这个时候就需要使用到RelativeLayout.LayoutParams.addRule()方法,该方法有两种重载方法:  (1)、addRule(int verb) 该方法表示所设置节点的属性不能与其他兄弟节点相关或者属性值为布尔值。  比如 add...
  • android.widget.RelativeLayout 有个 继承自android.view.ViewGroup.LayoutParams 的内嵌类 LayoutParams,使用这个类的实例调用 RelativeLayout.addView 就可以实现“相对布局”。[/quote] [si...
  • RelativeLayout.LayoutParams

    千次阅读 2013-11-01 08:33:59
    RelativeLayout.LayoutParams 继承关系: java.lang.Object --->android.view.ViewGroup.LayoutParams--->android.view.ViewGroup.MarginLayoutParams--->android.widget.RelativeLayout.LayoutPara
  •  RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);  lp1.addRule(RelativeLayout.ALIGN_WITH_PARENT_TOP);  lp1.addRule(RelativeLayout.CENTER_...
  • 在ListView中使用RelativeLayout.LayoutParams的addRule方法后,出现组件错位的情况。 RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(); params.addRule(RelativeLayout.ALIGN_RIGHT,R.id...
  • 问题就出在这里:父布局RelativeLayout需要为子控件BackCarView分配空间的时候,需要使用RelativeLayout.LayoutParams来获取子控件的LayoutParams。 所以只需要将FrameLayout改成RelativeLayout即可。 类似的情况有...
  • 纯用代码进行安卓布局,为什么RelativeLayout.BELOW这个设置不起作用privateintreceiverid=0;privateintmsgid=1;privateintbtnid=2;publicAppTalk(Contextcontext,ISystemMethodsiSystemMethods){super(context);...
  • 但是,在有些情况下,我们需要动态设置布局的属性,在不同的条件下设置不同的布局排列方式,这时候就需要用到 RelativeLayout.LayoutParams.addRule() 方法,该方法有两种重载方式:  addRule(int verb) :用此...
  • ???RelativeLayout.LayoutParams的使用疑点

    千次阅读 2012-12-13 14:37:39
    下面是两种情况的代码,先说明一下疑点:前者布局图片在同一个位置,而后者达到了预期的情况,出现3行3列的布局,至于原因貌似没想明白,请求高手解释???... (ViewGroup.LayoutParams.WRAP
  • FATAL EXCEPTION: main E/AndroidRuntime(15941): Process: be.mabolifting.maboserve,PID: 15941 E/AndroidRuntime(15941): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be...
  • 项目开发中碰到一个异常比较奇怪,因为这个异常一旦出现会然你很头疼,...java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
  • public void onCheckboxClicked(View view) {CheckBox checkBox = (CheckBox) ...RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.Layout...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,973
精华内容 10,789
关键字:

relativelayout.layoutparams