我正在尝试实现可刷卡效果,就像应用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>
在滑动之前
滑动后,子视图的底部被剪裁:(
----------------编辑-----------------------
我发现问题是在线性布局中,最后一个子节点总是显示在顶部(较大的z-index)。所以即使cardstack容器没有剪切chirdren,它的子节点仍然显示在下面的下一个视图下面。所以最好切换到相对布局。
但我真的不想,因为RelativeLayout没有一个很好的“layout_weight”功能来指定高度百分比。所以情况是我想要一种方法来轻松控制z-index(线性布局不可能的事情)并且还希望保持“layout_weight”特征(似乎只对linearlayout可行)。有什么想法??
答案 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