我有一个相对的布局,我正在编程中创建:

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

现在,我有两个按钮要在此相对布局中添加。但是问题是两个按钮都在相关的左侧左侧显示。

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

现在我想知道如何通过编程设置 android:layout_alignParentRight="true“ 或者 android:layout_toLeftOf="@id/btn" 按钮的属性就像我们在XML中所做的那样?

有帮助吗?

解决方案

您可以访问任何 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

其他提示

  1. 您需要为按钮创建和ID,您需要重新使用:btn1.setId(1);
  2. 您可以使用参数变量将参数添加到布局中,我认为该方法是 addRule(), ,请查看Android Java文档LayoutParams 目的。

用于添加 RelativeLayout 其价值为真或错误的属性 0 对于错误和 RelativeLayout.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).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top