如何在没有支持库的情况下使用 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'
}
是的,添加对 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。
我正在开发一个不需要向后兼容的 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'
}
是的,添加对 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。