【问题标题】:Dynamically changing the position of a button with respect to another button动态改变一个按钮相对于另一个按钮的位置
【发布时间】:2015-07-28 10:10:13
【问题描述】:

我已经看到了几个通过程序(来自 java)为 android 中的视图设置相对位置的示例。但在我的特殊情况下,我有 2 个按钮(不是视图)说“button_tag”和“button_rate”,它们是通过 xml 制作的,默认情况下排列为“button_tag”在“button_rate”上方。如果在任何时候有一种机制我可以动态地在“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部分如图

【问题讨论】:

  • 它们是线性布局。正确吗?

标签: android android-widget


【解决方案1】:

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

例如:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      相关资源
      最近更新 更多