如何使视图相互重叠指定的数量?

时间:2015-01-02 15:55:13

标签: android android-layout

假设我正在尝试堆叠卡片,我想把一个女王放在一个国王的顶部,但仍然可以看到国王的前20个左右的像素,所以你可以告诉它在女王之下。你怎么做到这一点?

我已经使用线性布局容器定义了网格布局。每个容器包含一个图像按钮。我能得到的最接近的是占据图像按钮下的侵入图像按钮缩小。

像这样: http://i.stack.imgur.com/broaD.png

我想堆叠图像按钮,但仍然可以点击基础图像按钮。

编辑: 通过在这里广泛搜索并了解了很多关于视图的知识,我能够弄明白。 我现在正在使用

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, 0, 0, -60);
view.setLayoutParams(lp); 

1 个答案:

答案 0 :(得分:1)

您可以为顶视图设置android:layout_marginBottom="-50dp",以便与其下方的视图重叠。在这里, 50dp 是您想要重叠视图的数量。

像这样:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/imageButton1"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="#ff0000"
            android:layout_marginBottom="-50dp" />

        <ImageButton
            android:id="@+id/imageButton2"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="#00ff00"
            android:layout_marginBottom="-50dp" />

        <ImageButton
            android:id="@+id/imageButton3"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="#0000ff" />

    </LinearLayout>

</RelativeLayout>

通过代码:

ImageButton imageButton1 = (ImageButton) findViewById(R.id.imageButton1);
        LinearLayout.LayoutParams layoutParams = (LayoutParams) imageButton1
                .getLayoutParams();
        layoutParams.setMargins(layoutParams.leftMargin,
                layoutParams.topMargin, layoutParams.rightMargin,
                (layoutParams.bottomMargin - 50));
        imageButton1.setLayoutParams(layoutParams);