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

时间:2016-01-14 07:09:19

标签: android android-fragments android-support-library android-snackbar

我正在开发一款不需要向后兼容的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)

我用谷歌搜索但找不到任何带有活动的小吃吧的例子。因此有必要使用支持库,如

  

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

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

3 个答案:

答案 0 :(得分: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'
}

Read more in detail here

答案 1 :(得分: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>

答案 2 :(得分:1)

如果你像我一样顽固而你不想使用支持库,但想在你的应用程序中使用快餐栏,那么你可以选择。我发现Use prepared parameterized statements本质上是你知道的Snackbar,只是独立于支持库。它适用于我,但它可能没有一些功能,如出现时向上移动FloatingActionButton。