按钮和可见性的奇怪行为消失了

时间:2014-04-04 11:44:34

标签: android android-layout android-linearlayout

我有一个非常奇怪的问题,按钮,垂直居中和能见度消失了。在我的应用程序中,我有一个书籍列表,我使用swipelistview库在每行后面创建按钮。我有3个按钮:返回,发送提醒和删除。如果图书未被归档,则返回和发送提醒按钮可见性将动态设置为Visibility.GONE。现在这是我的问题。我在行的后面有以下xml布局。

<LinearLayout
        android:id="@+id/swipelist_backview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:tag="swipelist_backview"
        android:background="#101010">
                <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="55px"
                android:layout_gravity="center_vertical"
                android:id="@+id/swipe_button1"
                android:text="@string/markAsReturned"/>

                <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:id="@+id/swipe_button2"
                android:layout_gravity="center_vertical"
                android:text="@string/sendReminder"/>

                <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:id="@+id/swipe_button3"
                android:layout_gravity="center_vertical"
                android:text="@string/delete"/>


</LinearLayout>

现在预期的结果是按钮将在每行的中间垂直居中,如果书籍被挂起,则会发生这种情况,并且所有按钮都可见。但是如果这本书没有被删除,那么显示的唯一按钮就是删除,而且它没有对齐。

我还使用以下代码将删除按钮的左边距设置为55像素:

if(!item.isLended())
{
    btnReturn.setVisibility(View.GONE);
    btnSendReminder.setVisibility(View.GONE);
    LayoutParams lp = new LayoutParams(btnDelete.getLayoutParams());
    lp.setMargins(55, 0, 0, 0);
    btnDelete.setLayoutParams(lp);
}

我认为这可能会删除正确的对齐方式,但LayoutParams似乎无法设置layout-gravity,因此它看起来并不像。

1 个答案:

答案 0 :(得分:1)

嗯,我猜这是LayoutParams。如果有人有兴趣,请按照以下方式解决问题:

if(!item.isLended())
{
    btnReturn.setVisibility(View.GONE);
    btnSendReminder.setVisibility(View.GONE);
    LayoutParams lp = new LayoutParams(btnDelete.getLayoutParams());
    lp.setMargins(55, 0, 0, 0);
    lp.gravity = Gravity.CENTER_VERTICAL;
    btnDelete.setLayoutParams(lp);
}