动态更改按钮相对于另一个按钮的位置

时间:2015-07-28 10:10:13

标签: android android-widget

我已经看过几个用于通过程序(来自java)为android中的视图设置相对位置的示例。但在我的特殊情况下,我有2个按钮(不是视图)说" button_tag"和" button_rate"它们是通过xml制作的,并且排列成" button_tag"以上" button_rate"默认情况下。如果在任何时候都有一种机制可以让我做出" button_tag"在" button_rate"动态。

 <Button
     android:id="@+id/button_tag"
     android:layout_width="match_parent"
     android:layout_height="40dp"
     android:layout_marginTop="1dp"
     android:background="@drawable/img_whitebackground"
     android:gravity="left|center_vertical"
     android:paddingLeft="5dip"
     android:text="@string/string_tag"
     android:onClick="click_addscreen" >
 </Button>

 <Button
    android:id="@+id/button_rate"
    android:layout_marginTop="1dp"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:text="@string/string_rate"
    android:gravity="left|center_vertical"
    android:paddingLeft="5dip"
    android:onClick="click_addscreen"
    android:background="@drawable/img_whitebackground" >
</Button>

两个按钮的xml部分如图所示

2 个答案:

答案 0 :(得分:1)

您可以使用LayoutParams对象,并根据您的要求向该对象添加规则。然后将setlayoutparam设置为你的按钮。

例如:

            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(80,80); // size of button in dp
            params.addRule(RelativeLayout.LEFT_OF, R.id.btnAdd);
            params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
            params.setMargins(0, 0, 20, 60);
            btnMyLocation.setLayoutParams(params);

答案 1 :(得分:1)

您可以添加规则来动态设置位置。

RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.MATCH_PARENT);

p.addRule(RelativeLayout.BELOW, R.id.button_rate);
buttonTag.setLayoutParams(p);