在 Android 中开发 Material 设计主屏幕小部件

Developing Material Design homescreen-widgets in Android

好的,所以我正在开发一个非常简单的 Android 主屏幕小部件,它从图像板上获取最新图像并将其显示在图像视图中。

我希望可以选择设置此小部件的样式,以符合 Googles Material 设计指南,但是,我在开发和测试我的系统时遇到了以下问题Nexus 5 运行 棒棒糖 5.1 -

我似乎无法在小部件中使用卡片视图。它给了我一个 class not found 异常但是我没有得到这样的异常预览布局和我的 gradle 有正确的依赖性所以我怀疑它更多地与小部件兼容性有关?

所以我做了一些进一步的阅读,在 Google API 关于小部件的页面上,它有一个非常具体的小部件支持的视图列表,令我惊讶的是,其中不包括卡片视图。所以我回到了我的普通旧 Imageview

我想我的问题是,如何让这个图像视图看起来像 material 设计卡片? EG、圆角、微妙的 3d 效果、投影等。我不想给 imageview 一个边框,图像的边缘应该延伸到边缘并被圆角剪裁。

我试过将 Imageview 的样式简单地设置为 cardview 的样式,但这似乎完全没用:)

有人有想法吗?谢谢!

您可能想查看 google i/o 应用程序的来源:https://github.com/google/iosched/blob/master/android/src/main/res/layout/widget.xml

这是很久以前的事了,但是在XML中做一个简单的卡片背景是非常可行的。

执行此操作的方法是在 drawables 应用程序资源文件夹中创建一个 cardview-esque .xml 文件。

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/white" />
    <corners android:radius="4dp" />
</shape>

并将您的 Widget XML 布局的背景视图设置为

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/widget_card_background"
    android:orientation="vertical">

    <.../>

</LinearLayout>

你是正确的,因为 CardView 不是 Android 小部件的可用视图类型,但这应该创建你在 2 年前寻找的功能