如何仅针对某些API级别覆盖可绘制对象

时间:2018-07-12 16:02:39

标签: android

以前,我有一个按钮,其背景使用的是?attr/actionBarItemBackground?attr/actionBarItemBackground来自Android系统本身)

<Button
    android:gravity="center"
    android:textSize="18sp"
    android:minHeight="56dp"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:background="?attr/actionBarItemBackground"
    android:text="1" />

对于21级及以上的API,我希望它具有稍微不同的可绘制对象。因此,我做了以下修改。

<Button
    android:gravity="center"
    android:textSize="18sp"
    android:minHeight="56dp"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:background="?attr/keypadBackground"
    android:text="1" />

drawable-v21 / keypad_background_light.xml(替代)

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?attr/colorControlHighlight"
    android:radius="40dp" />

drawable / keypad_background_light.xml(倾向于否,但失败)

<?xml version="1.0" encoding="utf-8"?>
<item xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="?attr/actionBarItemBackground" />

styles.xml

<item name="keypadBackground">@drawable/keypad_background_light</item>

但是,当我在API 12上运行时,会收到以下错误消息。

Caused by: android.content.res.Resources$NotFoundException: File res/drawable/keypad_background_light.xml from drawable resource ID #0x7f0800c7

0 个答案:

没有答案