5

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

android.view.InflateException:二进制 XML 文件第 18 行:错误膨胀类 android.support.design.widget.Snackbar$SnackbarLayout E/AndroidRuntime(19107):在 android.view.LayoutInflater.createView(LayoutInflater.java:640) E /AndroidRuntime(19107):在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)

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

AppCompatActivity 或 android.support.v4.app.Fragment。

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

4

3 回答 3

3

您需要使用支持设计库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'
}

在这里阅读更多详细信息

于 2016-01-14T07:11:55.260 回答
2

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

于 2018-02-01T11:33:36.127 回答
2

是的,在你的 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应用程序并添加@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>
于 2016-01-14T07:45:02.007 回答