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

Fah*_*Ali 277 android android-relativelayout android-layoutparams

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

 RelativeLayout layout = new RelativeLayout( this );
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT);
Run Code Online (Sandbox Code Playgroud)

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

buttonContainer.addView(btn1);
buttonContainer.addView(btn2);
Run Code Online (Sandbox Code Playgroud)

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

Ric*_*ler 626

您可以使用LayoutParams代码访问任何代码View.getLayoutParams.您只需要非常了解LayoutParams您的访问权限.这通常是通过检查包含ViewGroup它是否有一个LayoutParams内在孩子然后就是你应该使用的那个来实现的.在你的情况下它是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
Run Code Online (Sandbox Code Playgroud)

  • 如何添加ID? (18认同)

cod*_*ber 12

  1. 您需要为需要重新引用的按钮创建和标识: btn1.setId(1);
  2. 你可以使用params变量为你的布局添加参数,我认为方法是addRule(),检查这个LayoutParams对象的android java文档 .


sho*_*hoe 6

要添加RelativeLayout值为true或false 的属性,请使用0false和RelativeLayout.TRUEtrue:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) button.getLayoutParams()
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE)
Run Code Online (Sandbox Code Playgroud)

不论是否已添加该属性都没关系,您仍然可以使用addRule(verb, subject)它来启用/禁用它。但是,您可以使用API​​ 17后removeRule(verb),它只是的快捷方式addRule(verb, 0)