有没有办法在 drawable.xml 文件中定位某些 Api?

Is there a way to target certain Api's in a drawable.xml file?

我使用 ripple 创建了一个自定义 drawable,它只针对 api 21 及以上,我知道它可以通过编程方式完成,但是有没有办法在 drawable 本身中做到这一点?

我还尝试为更高的 api 创建一个单独的文件夹,我听说可以通过布局来完成,但运气不好,谢谢。

听起来您已经尝试过了,但这应该可行。在 res 文件夹中创建一个 drawable-v21。这应该针对 API 21 及更高版本(或者如果您有另一个更高的 API 可绘制文件夹,即 drawable-v24,您的 21 将从 21 到 23)。将该级别的可绘制对象放在这个新目录中

您可以为不同的 API 版本创建多个资源,让 Android 根据设备的 API 版本选择其中之一。创建一个新的 drawable.xml 文件,但选择 API 版本 21 作为限定符并将代码放在上面。创建另一个没有版本限定符的 drawable.xml 并放置另一个在 21 之前版本上运行的代码。

你可以这样使用:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP)

然后显示您的可绘制对象。