如何以编程方式在相对布局中设置TextViews的对齐父右属性

时间:2017-02-02 07:52:39

标签: java android xml relativelayout layoutparams

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

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

现在我想在这个相对布局中添加两个TextView。但问题是TextViews显示在RelativeLayout左侧彼此重叠。

textViewContainer.addView(textView1);
textViewContainer.addView(textView2);

现在我想知道如何以编程方式设置

`android:layout_alignParentRight="true"`

`android:layout_toLeftOf="@id/textView"` 
TextViews的

属性和我们在xml中的做法一样?

3 个答案:

答案 0 :(得分:1)

您可以使用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)textView.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
params.addRule(RelativeLayout.LEFT_OF, R.id.id_to_be_left_of);

textView.setLayoutParams(params); //causes layout updat

答案 1 :(得分:0)

使用方法addrule

params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);

答案 2 :(得分:0)

您需要将LayoutParams与每个视图对齐:

button

然后为每个视图添加适当的规则:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

到第一个和

params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 

到第二个。

然后将其应用于视图:

params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);