ViewGroup剪辑子项不能设置为false

时间:2014-10-28 11:20:27

标签: android android-layout viewgroup clip

我正在尝试实现可刷卡效果,就像应用Tinder一样: https://play.google.com/store/apps/details?id=com.tinder&hl=en_GB

当我刷卡时,即使我将clipchildren和cliptopadding设置为false,子视图也总是被其容器剪切。知道为什么????

CardStack是我的自定义容器布局扩展了RelativeLayout xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<com.wenchao.cardstack.CardStack
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:padding="20dp"
    android:clipChildren="false" <!--- false -->
    android:clipToPadding="false"
    android:layout_weight="3"
    />


<RelativeLayout

    android:layout_weight="1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:background="#FF00FF"
    >
    <Button
        android:layout_centerHorizontal="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="B"
        android:id="@+id/info"
        />
    <Button
        android:id="@+id/like"
        android:layout_toLeftOf="@+id/info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="A"
        />
    <Button
        android:id="@+id/dislike"
        android:layout_toRightOf="@+id/info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="C"
        />

</RelativeLayout>
在滑动之前

enter image description here

滑动后,子视图的底部被剪裁:(

enter image description here

----------------编辑-----------------------

我发现问题是在线性布局中,最后一个子节点总是显示在顶部(较大的z-index)。所以即使cardstack容器没有剪切​​chirdren,它的子节点仍然显示在下面的下一个视图下面。所以最好切换到相对布局。

但我真的不想,因为RelativeLayout没有一个很好的“layout_weight”功能来指定高度百分比。所以情况是我想要一种方法来轻松控制z-index(线性布局不可能的事情)并且还希望保持“layout_weight”特征(似乎只对linearlayout可行)。有什么想法??

1 个答案:

答案 0 :(得分:0)

为什么需要layout_weight?我假设顶视图填充所有可用空间?现在你将屏幕划分为四分之一,但是如果你可以在这两个视图中设置一个大小,问题就解决了。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <RelativeLayout
        android:id="@+id/button_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="@dimen/large_bottom_padding"
        android:background="#FF00FF"
        >
        <Button
            android:layout_centerHorizontal="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B"
            android:id="@+id/info"
            />
        <Button
            android:id="@+id/like"
            android:layout_toLeftOf="@+id/info"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="A"
            />
        <Button
            android:id="@+id/dislike"
            android:layout_toRightOf="@+id/info"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="C"
            />

    </RelativeLayout>

    <com.wenchao.cardstack.CardStack
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"         <!-- Not really important -->
        android:layout_alignParentTop="true"         <!-- Because of these lines -->
        android:layout_above="@id/button_container"  <!-- Because of these lines -->
        android:padding="20dp"
        android:clipChildren="false" <!--- false -->
        android:clipToPadding="false"
        />

</RelativeLayout