为旧版本的 Android 覆盖 Android-L CardView state_pressed

2024-04-09

在最新的 Android SDK 中,我们现在有了新的 CardView,我已经用新版本替换了旧的 CustomCardView,但是当在旧版本的 Android 上运行时,我看到state_pressed & state_focused是显示在 CardView 上方的丑陋方块......

有谁知道我如何在新的 CardView 中模拟以下内容,但仅在使用旧版本的 Android 时?

<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:enterFadeDuration="150"
    android:exitFadeDuration="150" >

    <item android:state_pressed="true"
          android:drawable="@drawable/card_on_press"/>
    <item android:state_focused="true" android:state_enabled="true"
          android:drawable="@drawable/card_on_focus"/>
    <item android:state_enabled="true"
          android:drawable="@drawable/card_default"/>
    <item android:state_enabled="false"
          android:drawable="@drawable/card_on_press"/>

</selector>

对于那些对此感兴趣的人来说,我现在使用的是 CardView:

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/CardView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="10dp"
    android:foreground="?android:attr/selectableItemBackground"
    android:onClick="RunSomeMethod"
    card_view:cardCornerRadius="4dp"
    android:focusable="true"
    android:elevation="2dp">

    <LinearLayout
        android:id="@+id/LinearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:focusable="false"
        android:visibility="visible">

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

使用以下代码修复:

值-v21\styles.xml:

<style name="CardViewStyle" parent="CardView.Light">
    <item name="android:foreground">?android:attr/selectableItemBackground</item>
</style>

值\styles.xml:

<style name="CardViewStyle" parent="android:Widget.TextView">
    <item name="android:foreground">@drawable/card</item>
</style>

来自layout\main_layout.xml的卡片:

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/Card_View"
    style="@style/CardViewStyle"
    android:layout_width="480dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="10dp"
    card_view:cardCornerRadius="4dp"
    android:elevation="2dp">

这将允许您提供 v21+ 中的动画,但也可以在 v21 之前提供替代动画,而不是大的蓝色/灰色方块。

这是我用作可绘制对象的card.xml,供感兴趣的人使用:

<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:enterFadeDuration="150"
    android:exitFadeDuration="150" >

    <item android:state_pressed="true"
          android:drawable="@drawable/card_on_press"/>
    <item android:state_focused="true" android:state_enabled="true"
          android:drawable="@drawable/card_on_focus"/>
    <item android:state_enabled="true"
          android:drawable="@drawable/card_default"/>
    <item android:state_enabled="false"
          android:drawable="@drawable/card_on_press"/>
</selector>

Note: Drawable 默认值作为透明项就可以了,因为 CardView 为所有 Android 版本提供了默认背景。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为旧版本的 Android 覆盖 Android-L CardView state_pressed 的相关文章

  • Android Studio 3.0 Canary 9 - 无法解析包

    我在 Android Studio 3 0 Canary 9 中遇到几个错误 这些错误是 无法解析 android 软件包 下面列出了一些错误 我刚刚安装了 SDK 的所有额外软件包 但仍然收到 gradle 构建错误 Error 82 1
  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • 在 ViewPager Fragments 中使用 Master/Detail 模板(下载链接)

    工作代码 https github com lukeallison ViewPagerMasterDetail https github com lukeallison ViewPagerMasterDetail Android 主 详细流
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • Android Activity 生命周期函数基础知识

    我正在测试这段代码 它显示活动所处的状态 public class Activity101Activity extends Activity String tag Lifecycle Called when the activity is
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • 发布android后更改应用内购买项目的价格

    在 Google Play 上发布后 是否可以更改应用内购买商品的价格 我假设该应用程序也已发布 完整的在线文档位于http developer android com http developer android com也http sup
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • Android Studio 0.4.3 Eclipse项目没有gradle

    在此版本之前 在 Android Studio 中按原样打开 Eclipse 项目似乎很容易 无需任何转换 我更喜欢 Android Studio 环境 但我正在开发一个使用 eclipse 作为主要 IDE 的项目 我不想只为这个项目下载
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • Android:膨胀布局时出现 StackOverFlowError 和 InvokingTargetException

    首先 对不起我的英语 我在膨胀布局时有一个问题 我有一个自定义视图 从 LinearLayout 扩展而来 称为按钮帮助 我在名为的布局上使用该视图加载活动 我的以下代码在所有设备和模拟器上都能完美运行 但具有 QVGA 屏幕 例如 Sam
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL

随机推荐

  • system.data.oledb.oledbException(0x80004005):找不到文件

    有人可以帮我解决这个错误吗 我想不通 我在 Windows XP 上遇到此错误 但在 Windows 7 上没有 我所做的是附加一张照片并将其保存到数据库 MS Access 作为我的数据库 照片出现在图片框上 但之后一切都变得一团糟 我正
  • R:ggplot背景渐变着色

    我想生成具有渐变颜色的 ggplot 填充绘图面板及其背景 如此处所示 正如您所看到的 渐变背景颜色包含绘图面板及其背景 目前 我只知道所需解决方案的 近似值 library ggplot2 library grid library gri
  • 实施 IEnlistmentNotification 时我应该在哪里执行操作?

    我正在尝试通过实现来创建自定义 资源管理器 I入伍通知 http msdn microsoft com en us library system transactions ienlistmentnotification 28v vs 110
  • Datagrid 与 Gridview [重复]

    这个问题在这里已经有答案了 可能的重复 ASP NET 中 DataGrid 和 GridView 之间的区别 https stackoverflow com questions 4230 the difference between a
  • php中按字母顺序排列的列表组[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个成员表 其中存储有关成员的所有详细信息 包括其姓名 电子邮件 电话等 我希望该名称按字母顺序显示 如示例所示 A Alan Alex
  • 如何更改 Eclipse 模板中使用的 ${user} 变量的值

    我希望 Eclipse 使用从帐户信息中获取的用户真实姓名 而不是硬编码默认的 author 模板 在 Linux 中 但也欢迎 Windows 解决方案 将其输入 Eclipse 配置中的某个位置也是可以接受的 可惜我找不到正确的位置 看
  • Slick 3 从查询中返回自定义案例类

    目前我有这样的事情 val q for department lt departments if department id x employee lt employees if employee departmentId departme
  • 如何防止PayPal重复付款?

    我有一个简单的 立即付款 按钮 通过按钮创建者创建的代码 并添加了一个 自定义 隐藏字段来识别它 我想知道是否可以添加一些额外的隐藏字段来告诉 PayPal 此交易不应进行两次
  • 正则表达式匹配/分组字符串中的重复字符

    我需要一个正则表达式来匹配字符串中的字符组 这是一个示例字符串 qwwwwwwwwweeeeerrtyyyyyqqqqwEErTTT 它应该匹配 比赛组 结果 1 q 2 wwwwwwwww 3 哎呀 4 rr 5 t 6 yyyyy 7
  • 如何在 SP 元数据中配置自定义属性

    我开始知道 在任何 SSO 解决方案中 如果 SP 需要任何其他属性 它可以使用以下方法在其元数据中发布它们 属性消费服务争论 现在可以添加所需的属性 如下所示
  • 如何在 VSTS 构建服务器上为 .Net Core 2 项目编译 Typescript 文件

    我一直在尝试在 VSTS 上的 CI 构建过程中将 TypeScript 文件编译为 JavaScript 文件 一旦生成了 JavaScript 文件 我的 gulp 文件进程就可以将它们处理到 wwwroot 文件夹 该项目在 Visu
  • 在联合上分配泛型类型

    TS 中有没有办法通过联合 分布 泛型类型 type Container a value A type Containers a
  • 使用特定主题标签时检索 Twitter 图片或视频

    我正在寻找为学校活动创建一个页面 基本上我想显示带有特定主题标签的推文的所有图片 如果可能的话还可以显示任何 youtube 或 vimeo 视频 我一直在查看 twitter API 但是我找不到起点 有人知道如何解决这个问题吗 我将不胜
  • 可以使用正则表达式来匹配嵌套模式吗? [复制]

    这个问题在这里已经有答案了 是否可以编写一个正则表达式来匹配出现次数未知的嵌套模式 例如 当外大括号内嵌套未知数量的左大括号时 正则表达式是否可以匹配左大括号和右大括号 例如 public MyMethod if test More Mor
  • ColdFusion UI 标签到 jQuery 的转换

    我正在尝试将一些具有各种 ColdFusion UI 标签的代码转换为 jQuery 我必须制定一个迁移计划 目前这就是我所拥有的 Tag Replacement CFApplet CFCalendar http jqueryui com
  • 选择单个列值并将其存储在变量 oracle sql 中

    我想获取特定列值 a id 并将其存储到变量 v id 中 然后使用该值传递到存储过程中 DECLARE v id a id TYPE BEGIN SELECT id into v id from a where a name test a
  • Java中有没有办法预加1以上?

    在 Java 中 您可以通过以下方式对整数 i 进行后增量 j i 2 我想通过预增量做同样的事情 e g j 2 i This will not work 只需将增量语句放在括号中即可 例如 以下将输出pre 2 int i 0 Syst
  • 如何编写 GraphQL 查询

    我有一个有效的网络 graphql 查询 me on Student profile fullName emailId mobileNumber civilId address city state country zipCode user
  • 使用 OkHttp 时是否可以限制带宽?

    使用 OkHttp 是否可以限制带宽 可能使用网络拦截器 您可以通过两种方式使其发挥作用 手动发送请求并读取流 并在读取时进行节流 添加拦截器 使用OkHttp最好的方法是Interceptor 还有几个简单的步骤 继承Intercepto
  • 为旧版本的 Android 覆盖 Android-L CardView state_pressed

    在最新的 Android SDK 中 我们现在有了新的 CardView 我已经用新版本替换了旧的 CustomCardView 但是当在旧版本的 Android 上运行时 我看到state pressed state focused是显示