【问题标题】:Using Snackbar for 5.0+ devices将 Snackbar 用于 5.0+ 设备
【发布时间】:2016-04-01 12:52:52
【问题描述】:

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

但我有一个用例需要Snackbar 和UNDO 选项。看完之后,看来我必须:

  • 使用CoordinatorLayout(支持库一)
  • 使用AppCompatActivity,而不是Activity
  • 使用Theme.AppCompat.(...) 而不是android:Theme.Material
  • 更改应用程序中的所有其他视图,包括 ActionBar 只是为了与 AppCompat 兼容(有点讽刺)

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

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

【问题讨论】:

  • 你试过了吗? CoordinatorLayout 不能与普通 Activity 一起使用吗?
  • 试过了,但它只是崩溃了。看来这些事情都需要做! 12-27 18:51:33.441 2199-2199/? E/AndroidRuntime: Process: com.example.perfectday, PID: 2199 12-27 18:51:33.441 2199-2199/? E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.perfectday/com.example.perfectday.MainActivity}: android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class android.support.design.widget.CoordinatorLayout
  • 我试过了,堆栈跟踪的关键部分在这里:Caused by: java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library. at android.support.design.widget.ThemeUtils.checkAppCompatTheme(ThemeUtils.java:34) at android.support.design.widget.CoordinatorLayout.<init>(CoordinatorLayout.java:178)。所以是的,你需要使用 appcompat 来使用设计库。
  • 是的,我就是这么想的。这太糟糕了!

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


【解决方案1】:

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

您是否需要CoordinatorLayout 取决于您在何处以及如何显示Snackbar

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

欢迎使用independent implementations of the snackbar pattern,如this one that I use。 AFAIK 它们都已被其作者停止使用,以支持正式实施。

【讨论】:

  • @magicmushroom:“那么当我使用 AppCompat 时,需要更改哪些内容?” -- 主要是你的第二个和第三个项目符号,加上你的菜单资源需要将一些属性移动到自定义命名空间中(例如,app:showAsAction)。 “我是否还需要将每个 TextView/Button 更改为“android.support”?” -- 不,当您使用LayoutInflater(或setContentView())应用布局资源时,会自动应用任何此类转换。
  • 你能帮我实现 MrEngineer13 的库吗?我无法理解如何为 SnackBar 的 2 个单独实例捕获“onMessageClick”。我真的想避免使用设计支持库所需要的不必要的代码。 @CommonsWare
  • @magicmushroom:“我无法理解如何为 SnackBar 的 2 个单独实例捕获“onMessageClick””——我没有使用过该特定功能。我建议您提出一个单独的 Stack Overflow 问题,显示您的代码并详细解释您的问题。
【解决方案2】:

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

除了这个CoordinatorLayout 只是用来放置在显示小吃店时可以上下移动的浮动动作

【讨论】:

    猜你喜欢
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 2016-01-26
    • 2018-04-08
    相关资源
    最近更新 更多