ListView与CardViews奇怪的行为与margin&填充

时间:2017-07-18 19:03:31

标签: android android-layout

我已经在一些在线教程中实现了ListView内置CardView的内容。

包含列表的布局片段

<ListView
                android:id="@+id/interactions_list"
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentStart="true"
                android:layout_marginTop="10dp"
                android:visibility="invisible"
                android:layout_alignParentTop="true"
                android:divider="#000000"
                android:dividerHeight="4dp"
                />

元素布局

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="16dp"
        android:orientation="vertical"
    >
        <android.support.v7.widget.CardView
            android:background="#00000000"
            android:layout_width="fill_parent"
            android:layout_height="100dp"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            card_view:cardCornerRadius="2dp"
            card_view:contentPadding="10dp"
            android:id="@+id/cv">

                <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:padding="0dip">

                    <TableRow android:padding="5dip">
                        <ImageView
                            android:id="@+id/pkicon"
                            android:layout_width="50dp"
                            android:layout_height="50dp"
                            android:layout_margin="3dp"/>

                        <LinearLayout android:id="@+id/lnlayout"
                            android:layout_width="50dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:orientation="vertical"
                            android:layout_margin="3dip">

                            <TextView
                                android:id="@+id/pkname"
                                android:layout_width="wrap_content"
                                android:layout_height="30dp"
                                android:textColor="#000000"
                                android:textSize="20sp"/>

                            <TextView
                                android:id="@+id/pknot"
                                android:layout_width="wrap_content"
                                android:layout_height="20dp"
                                android:textColor="#606060"/>

                        </LinearLayout>

                    </TableRow>
                </TableLayout>
        </android.support.v7.widget.CardView>

    </LinearLayout>

现在,当用户点击一张卡时,我遇到了奇怪的行为,如此屏幕截图所示:

enter image description here

卡片显示正确,但点按时,涟漪效果会覆盖LinearLayout元素,并且卡片背景为实心不透明。

预期行为:卡背后的背景仍为白色,仅在卡片上出现涟漪效应。

请帮忙。

2 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为您的父视图是线性布局,这就是使用

创建涟漪的原因
app:cardBackgroundColor="?selectableItemBackground"

android:background="?selectableItemBackground"

android:foreground="?selectableItemBackground"
在cardview布局中

并设置单击侦听器到此cardview布局而不是在父级即ie。的LinearLayout。

答案 1 :(得分:0)

也许改变LinearLayout widthheightwrap_content可以解决问题

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:orientation="vertical">