我在应用程序中设置对齐按钮时遇到了一些问题。我在一个布局中有4个不同的按钮,根据数据库中的某些值,我必须设置一个按钮的可见性。以下是我正在使用的xml代码示例:
<RelativeLayout
android:id="@+id/coll_buttons"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center"
android:layout_marginBottom="10dp">
<Button
android:id="@+id/sync"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Synchronize"
android:textSize="9dp"
android:background="@drawable/ic_white_button"
android:textColor="#333333"
android:layout_margin="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:layout_alignParentLeft="true" />
<Button
android:id="@+id/activate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Activate"
android:textSize="9dp"
android:background="@drawable/ic_white_button"
android:textColor="#333333"
android:layout_margin="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:layout_alignParentLeft="true" />
<Button
android:id="@+id/buy_stampii"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Buy Stampii"
android:textSize="9dp"
android:background="@drawable/ic_white_button"
android:textColor="#333333"
android:layout_marginTop="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:layout_toRightOf="@+id/activate"
android:layout_marginLeft="5dp" />
<Button
android:id="@+id/deactivate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Deactivate"
android:textSize="9dp"
android:background="@drawable/ic_white_button"
android:textColor="#333333"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:layout_alignParentRight="true" />
</RelativeLayout>
在第一种情况下,我必须将Button Activate
的可见性设置为false,并将Button Sync
的可见性设置为true。但是当我这样做时,我的Buy Stampii
按钮覆盖了Sync Button
,因为我正在设置Buy Stampii
按钮toRightOf
Activate Button
。那么有什么方法可以为Buy Stampii
按钮toRightOf
属性设置两个不同的按钮,或者我该如何解决这个问题呢?
非常感谢!
答案 0 :(得分:2)
NOp我认为你不能同时设置指向2个小部件的toRightOf属性。
是的,您可以执行一种解决方法。您可以将属性设置为INVISIBLE,而不是将视图置于可见性之外。在这种情况下,如果你说A在B的右边,如果A是可见的,它将正常工作。但问题是当A消失时,消失意味着B不知道放在哪里(在'没有'的右边因为A消失了)。诀窍是让A变得不可见。在这种情况下,你仍然可以说B是A的权利,而B将知道在哪里放置。
缺点是,当A不可见时,该地方仍将被占用,但您可以通过播放布局的大小轻松解决此问题。例如,当INVISIBLE你可以将宽度设置为1dip,当可见时你可以设置为wrap_content或者适合你的东西
这项工作我尝试过,但解决方案是UGLY,基本上你不应该像这样做。
答案 1 :(得分:0)
我认为解决方案是在设置按钮Visible / Invisible(Gone)时使用适当的规则更改RelativeLayout.LayoutParams。只需获取按钮的当前参数即可。addRule(RelativeLayout.ALIGN_RIGHT,<new anchor id>
)
答案 2 :(得分:0)
处理此问题的更好方法是分别为两种不同的布局(纵向和横向)分别设置两个不同的布局文件。
我建议您阅读该文档,这是解决问题的一种非常简单的方法!
希望这有帮助。