gpt4 book ai didi

android - 如何在卡片 View 中将卡片变灰?

转载 作者:行者123 更新时间:2023-12-02 12:42:27 29 4
gpt4 key购买 nike

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

<?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>

在我的类(class)(Adapter.kt)
name = itemView.findViewById(R.id.name) as TextView
if(value==true)
{
name.isEnabled=false
}

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

最佳答案

您可以将色调设置为您的相对布局,这是您的项目设计中卡片 View 的直接子级。您必须在 xml 中执行此操作:

 <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:id="@+id/relParent"
android:background="#fff"
android:layout_width="100dp"
android:layout_height="150dp"
android:padding="8dp">
....>

我在 RelativeLayout 中添加了两个属性,第一个是 id,第二个是背景。

现在在适配器中你可以这样做:
if(value==true)  
{
itemView.relParent.background.setColorFilter(Color.parseColor("#6F6F6F"),PorterDuff.Mode.SRC_IN)
itemView.relParent.isEnabled=false
}
else
{
itemView.relParent.background.setColorFilter(Color.parseColor("#FFFFFF"),PorterDuff.Mode.SRC_IN)
itemView.relParent.isEnabled=true
}

注:您必须从 xml 将背景设置为 RelativeLayout,否则 itemView.relParent.background 将返回 null 并且您的应用程序将崩溃。

更新
在这种情况下,您需要为您的卡设置前景色:
itemView.cardDashboard.foreground= ColorDrawable(Color.parseColor("#906F6F6F"))

这里 cardDashboard 是您在项目设计中使用的卡片 View 。

所以最终的代码会是这样的:
       if(value==true)  
{
itemView.cardDashboard.foreground= ColorDrawable(Color.parseColor("#906F6F6F"))
itemView.relParent.isEnabled=false
}
else
{
itemView.cardDashboard.foreground= ColorDrawable(Color.parseColor("#006F6F6F"))
itemView.relParent.isEnabled=true
}

关于android - 如何在卡片 View 中将卡片变灰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55176495/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com