Android 将Snackbar用于5.0+;装置

Android 将Snackbar用于5.0+;装置,android,android-support-library,android-snackbar,snackbar,Android,Android Support Library,Android Snackbar,Snackbar,所以我想创建一个只支持棒棒糖及以上设备的应用程序 但是我有一个用例,需要一个带有撤销选项的Snackbar。读完之后,我似乎不得不: 使用协调器布局(支持库一) 使用AppCompatActivity,而不是Activity 使用Theme.AppCompat.(……代替android:Theme.Material 对应用程序中所有其他视图的更改,包括ActionBar,只是为了与AppCompat兼容(有点讽刺) 这真的是使用Snackbar等基本功能的唯一方法吗?必须在其他地方重写所有内

所以我想创建一个只支持棒棒糖及以上设备的应用程序

但是我有一个用例,需要一个带有撤销选项的
Snackbar
。读完之后,我似乎不得不:

  • 使用协调器布局(支持库一)
  • 使用
    AppCompatActivity
    ,而不是
    Activity
  • 使用
    Theme.AppCompat.(……
    代替
    android:Theme.Material
  • 对应用程序中所有其他视图的更改,包括
    ActionBar
    ,只是为了与
    AppCompat
    兼容(有点讽刺)
这真的是使用Snackbar等基本功能的唯一方法吗?必须在其他地方重写所有内容

请告诉我有更好的出路。这根本没有任何意义

这真的是使用Snackbar这样的基本功能的唯一方法吗?必须在其他地方重写所有内容

您是否需要协调器布局取决于您在何处以及如何显示
Snackbar

除此之外,要使用官方的
Snackbar
实现而不进行修改,您必须经历所有这些恶作剧


欢迎您使用,如。好吧,为了正式实现,他们的作者已经停止使用了。

根据您在评论中添加的异常跟踪,我认为这是因为您没有在
build.gradle
文件中添加对
'com.android.support:design:23.1.1'
的依赖性


除了此
CoordinatorLayout
仅用于放置浮动动作,当显示快餐店时,浮动动作可以上下移动

您尝试过吗?协调布局与普通活动不起作用吗?尝试过,但只是崩溃了。似乎所有这些事情都需要做<代码>12-27 18:51:33.441 2199-2199/?E/AndroidRuntime:Process:com.example.perfectday,PID:219912-2718:51:33.441199-2199/?E/AndroidRuntime:java.lang.RuntimeException:无法启动活动组件信息{com.example.perfectday/com.example.perfectday.MainActivity}:android.view.InflateException:二进制XML文件行#1:二进制XML文件行#1:错误膨胀类android.support.design.widget.CoordinatorLayout我尝试过,stacktrace的关键部分如下:
原因:java.lang.IllegalArgumentException:您需要在设计库中使用Theme.AppCompat主题(或后代)。在android.support.design.widget.ThemeUtils.checkAppCompatTheme(ThemeUtils.java:34)在android.support.design.widget.CoordinatorLayout.(CoordinatorLayout.java:178)
。所以是的,你需要使用appcompat来使用设计库。是的,我就是这么想的。这太糟糕了@magicmushroom:“那么,当我使用AppCompat时,需要更改哪些内容?”——主要是您的第二个和第三个项目符号,再加上您的菜单资源,需要将一些属性移动到自定义名称空间中(例如,
app:showAsAction
)。“我是否还需要将每个TextView/按钮更改为“android.support”one?”--不,当您使用
LayoutInflater
(或
setContentView()
)应用布局资源时,会自动应用任何此类转换。您能帮我实现MrEngineer13的库吗?我无法理解如何为SnackBar的两个单独实例捕获“onMessageClick”。我确实希望避免使用设计支持库所需要的不必要的代码@CommonsWare@magicmushroom:“我无法理解如何为SnackBar的两个单独实例捕获“onMessageClick”--我没有使用该特定功能。我建议您提出一个单独的堆栈溢出问题,展示您的代码并详细解释您的问题。