如何使用兼容支持库的 Android 材质组件?

Posted

技术标签:

【中文标题】如何使用兼容支持库的 Android 材质组件?【英文标题】:How to use Android material components with Support Library compatibility? 【发布时间】:2019-12-22 19:21:29 【问题描述】:

我尝试使用 android Material 组件库:https://github.com/material-components/material-components-android 用于获取材料日期选择器。将其添加到我的 gradle 后:implementation 'com.google.android.material:material:1.1.0-alpha09' 并构建项目后,我收到错误消息:

    Android resource linking failed
    warn: removing resource 
    .../values.xml:3332: error: style attribute 'android:attr/dialogCornerRadius' not found.
    .../values-v28.xml:15: error: resource android:attr/dialogCornerRadius not found.
    .../values-v28.xml:19: error: resource android:attr/dialogCornerRadius not found.
    .../values.xml:6855: error: resource android:attr/fontVariationSettings not found.
    .../values.xml:6855: error: resource android:attr/ttcIndex not found.
    .../values.xml:7134: error: resource android:attr/lineHeight not found.
    .../values.xml:7139: error: resource android:attr/lineHeight not found.
    .../values.xml:7354: error: resource android:attr/textFontWeight not found.
    error: failed linking references.

据我所知,AndroidX 和支持库存在冲突。 库文档指出需要迁移到 AndroidX。 我如何在不迁移的情况下使用这个库,或者有人知道类似的材料日期选择器库?

【问题讨论】:

【参考方案1】:

答案在文档中。

如果您还不想切换到新的 androidx 和 com.google.android.material 包,则可以通过 com.android.support:design:28.0.0 依赖项使用 Material 组件。注意:您不应在您的应用中同时使用com.android.supportcom.google.android.material 依赖项。

您可以找到另一个库,但请记住,今天的其他库(如 firebase 或 google play 服务)需要 androidx 迁移。迟早会成为标准。

【讨论】:

【参考方案2】:

您可以找到另一个材料日期选择器库here。为了解决链接错误,您可以尝试以下步骤:

1) 在 gradle.properties 文件中添加如下代码:

android.useAndroidX=true
android.enableJetifier=true

2) 在应用级别的 build.gradle 中,在buildTypes 中添加以下代码:

compileOptions 
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        

3) 将 compileSdkVersionbuildToolsVersion 设置为 28。

【讨论】:

以上是关于如何使用兼容支持库的 Android 材质组件?的主要内容,如果未能解决你的问题,请参考以下文章

Android 材质 CardView 波纹效果改变内容颜色

如何在不使用xml的情况下修改材质组件的主题?

Android 支持包/兼容性库 - 使用 v4 还是 v13?

Android Material Design 兼容库的使用

材质组件中没有 ImageView/ImageButton (Android)

matplotlib库的五个优点和缺点