2015-07-28 72 views
0

我曾見過一些示例,用於通過程序(從Java)爲android中的視圖設置相對位置。但在我的特殊情況下,我有2個按鈕(這不是視圖)默認情況下說「button_tag」和「button_rate」,這些按鈕是通過xml創建的,比如「button_rate」上方的「button_tag」。如果在任何時間點有一種機制,我可以動態地在「button_rate」下面製作「button_tag」。動態地改變按鈕相對於另一個按鈕的位置

<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部分被如圖

+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

您可以添加規則動態地設置位置。

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);