首页 > 解决方案 > 如何在卡片视图中将卡片变灰?

问题描述

我有一个动态列出一组卡片的卡片视图。我为此使用了recyclerview。现在我想通过灰显卡片或类似的东西来禁用卡片(基于价值)。这是包含卡片视图的布局

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

    <android.support.v7.widget.CardView
        android:layout_width="112dp"
        android:layout_height="140dp"
        android:layout_margin="10dp"
        android:clickable="true"
        android:focusable="true"
        android:scaleType="fitXY">

        <RelativeLayout
            android:layout_width="100dp"
            android:layout_height="150dp"
            android:padding="8dp">

            <ImageView
                android:id="@+id/appIcon"
                android:layout_width="match_parent"
                android:layout_height="62dp"
                android:padding="5dp"
                tools:ignore="VectorDrawableCompat" />

            <TextView
                android:id="@+id/name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/appIcon"
                android:layout_centerInParent="true"
                android:gravity="center"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                android:textColor="@drawable/selector"
                android:textSize="10dp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/appVersion"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentEnd="true"
                android:layout_marginBottom="5dp"
                android:layout_marginEnd="1dp"
                android:text="version 0.0"
                android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                android:textSize="8dp" />

        </RelativeLayout>

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

</LinearLayout> 

我找到了一些相关的查询,并尝试使用选择器并将每个字段而不是整个卡片变灰。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:color="@color/colorAppName" />
    <item android:state_enabled="false" android:color="@color/colorPrimary" />

</selector>

在我的课堂上(Adapter.kt)

name = itemView.findViewById(R.id.name) as TextView
if(value==true)
{
  name.isEnabled=false
}

但我想禁用整张卡。请帮忙

标签: androidkotlinandroid-cardview

解决方案


添加android:background="@drawable/selector"到您的RelativeLayoutLinearLayout. 这将适用于启用和禁用。

注意:- 这与问题无关,但如果您遵循。这对你有好处。

我们if(booleanVariable)直接比较,而不是像比较 if(booleanVariable==true)


推荐阅读