首页 文章

如何以编程方式设置相对布局中按钮的layout_align_parent_right属性?

提问于
浏览
255

我有一个相对布局,我正在以编程方式创建:

RelativeLayout layout = new RelativeLayout( this );
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT);

现在我有两个按钮,我想在这个相对布局中添加 . 但问题是RelatiiveLayout左侧的两个按钮都显示在彼此之间 .

buttonContainer.addView(btn1);
buttonContainer.addView(btn2);

现在我想知道如何以编程方式设置按钮的 android:layout_alignParentRight="true “或 android:layout_toLeftOf="@id/btn" 属性,就像我们在xml中一样?

3 回答

  • 10

    您可以使用 View.getLayoutParams 从代码访问任何 LayoutParams . 您只需要非常了解 LayoutParams 您的访问权限 . 这通常是通过检查包含 ViewGroup ,如果它有一个 LayoutParams 内部子项然后's the one you should use. In your case it' s RelativeLayout.LayoutParams 来实现的 . 你将使用RelativeLayout.LayoutParams#addRule(int verb)RelativeLayout.LayoutParams#addRule(int verb, int anchor)

    您可以通过代码访问它:

    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)button.getLayoutParams();
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    params.addRule(RelativeLayout.LEFT_OF, R.id.id_to_be_left_of);
    
    button.setLayoutParams(params); //causes layout update
    
  • 601
    • 您需要为需要重新引用的按钮创建和标识: btn1.setId(1);

    • 你可以使用params变量为你的布局添加参数,我认为方法是 addRule() ,查看这个 LayoutParams 对象的android java文档 .

  • 0

    要添加值为true或false的 RelativeLayout 属性,请使用 0 表示false,使用 RelativeLayout.TRUE 表示true:

    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) button.getLayoutParams()
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE)
    

    无论该属性是否已添加都无关紧要,您仍然使用 addRule(verb, subject) 来启用/禁用它 . 但是,在API 17之后,您可以使用 removeRule(verb) 这只是 addRule(verb, 0) 的快捷方式 .

相关问题