如何在没有支持库的情况下使用 Snackbar?

How to use Snackbar without support library?

我正在开发一个不需要向后兼容的 Android 应用程序。截至目前,目标 SDK 版本为 22。我使用的是原生 Activity,Fragment 和应用程序主题是 android:Theme.Material.Light。 我的问题是我无法在现有设置中使用 Snackbar,它会抛出类似

的异常

android.view.InflateException: Binary XML file line #18: Error inflating class android.support.design.widget.Snackbar$SnackbarLayout E/AndroidRuntime(19107): at android.view.LayoutInflater.createView(LayoutInflater.java:640) E/AndroidRuntime(19107): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)

我用谷歌搜索但找不到任何带有 Activity 的小吃店示例。那么是否有必要使用像

这样的支持库

AppCompatActivity or android.support.v4.app.Fragment.

为了在我的应用中使用 Snackbar?

您需要使用支持设计库compile 'com.android.support:design:23.0.1'才能工作:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:design:23.0.1'
}

(Read more in detail here)

是的,添加对 gradle

的依赖
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'

然后,相应地更改您的应用主题,您需要使用 AppCompat 主题。在您的 Styles.xml

上创建以下主题
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

然后在您的清单中:在应用程序上添加 @style/AppTheme 并在每个 activity

上添加 @style/AppTheme.NoActionBar
<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">

    <activity
        android:name=".Activities.MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
     </activity>
</application>

如果您像我一样固执,不想使用支持库,但想在您的应用程序中使用快餐栏,那么您可以选择一个选项。我发现 this deprecated library 本质上就是您所知道的 Snackbar,只是独立于支持库。它对我来说很好用,但是它可能没有某些功能,例如出现时向上移动 FloatingActionButton。