2011-01-09 81 views
235

我有我创建一个程序相对布局:如何以编程方式设置相对布局中按钮的layout_align_parent_right属性?

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呢?

回答

561

您可以使用View.getLayoutParams从代码中访问任何LayoutParams。你只需要非常清楚你的访问权限是什么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 
10
  1. 你需要为 按钮创建和id你需要REFFERENCE: btn1.setId(1);
  2. 可以使用PARAMS变量 参数添加到您的布局,我 认为该方法addRule(),检查 out of the android java docs for this LayoutParams object。
+0

我将高度赞赏任何一段代码。我没有在按钮中找到任何方法。 – 2011-01-09 11:30:42

+0

由于setId正在使用@IdRes进行注释,因此设置ID无助于预期实际资源ID,而不仅仅是一个数字。 – 2015-05-20 06:45:13