【问题标题】:Is there code for Snackbars in Android L or are we expected to implement them ourselves?Android L 中是否有 Snackbars 的代码,或者我们是否应该自己实现它们?
【发布时间】:2014-10-27 07:50:52
【问题描述】:

Material design 网站提到了一个类似 Toast 的新元素,称为 Snackbar:http://www.google.com/design/spec/components/snackbars-and-toasts.html

Android L 预览版 SDK 文档(抱歉,无法链接,因为它只能下载)在类列表中没有提及 Snackbar,也没有在 Toast 类文档中作为修饰符提及。我是否遗漏了一些明显的东西,还是应该构建自己的 Snackbar.java?

【问题讨论】:

  • 请记住 L 是预览版;仅仅因为 L 没有 Snackbar 并不意味着 Android 5.0(或任何编号的)不会有 Snackbar
  • 我明白了,但其他所有新内容在预览版 SDK 中都有代码,这似乎是他们忘记或没有准备好或不打算添加自己的一件事。我只是想知道是否有人找到了代码或实现了自己的版本。
  • 嗯...生产 sdk 中似乎仍然缺少。我看到其他 Google 员工的博客说随着时间的推移可能会有更多更新,但奇怪的是还没有。

标签: android android-5.0-lollipop android-toast material-design


【解决方案1】:

2015 年 5 月 29 日更新:

Google 发布了 Design Support Library,其中包括 Snackbar 和其他 Material Design 小部件。

原始答案中提到的 Snackbar 库现已弃用。

原答案

我确信 Google 最终会将它包含在未来的 SDK 中,以及预览版 SDK 中也缺少的浮动操作按钮。

正如@friedrich nietzche 指出的那样,我实现了一个库以在您的项目中包含Snackbar

https://github.com/nispok/snackbar

希望对你有帮助!

【讨论】:

【解决方案2】:

FWIW,

L Developer Preview 中似乎没有Snackbar 实现。我还实现了Snackbar library,目的是尽可能接近material design guidelines。谢谢。

【讨论】:

  • 好像不能通过左右滑动来解除它们,而且动画有点怪。
  • 那是因为我遵循材料设计指南。您通过向上/向下滑动而不是向左/向右滑动来关闭动画,这也是动画的来源。这是一个视频material-design.storage.googleapis.com/publish/v_2/…
  • 这很奇怪。它的作用类似于临时通知,可以被解除,但需要不同的方式被解除?
  • 但它不在一个列表中,也不是在一个集合中——它是一个单数单元。
  • 没错,但我没想到会这样。我现在尝试在 Gmail 上显示它,并注意到相同的行为(向下滑动)。我认为这不舒服且不直观
【解决方案3】:

Mabye 看看这里。 http://www.williammora.com/2014/08/snackbar-android-library.html

我猜原生版本最终会出现在 sdk 中。我同意这有点奇怪。

【讨论】:

    【解决方案4】:

    Snackbar 实际上只是一个带有一些边距的Crouton。当前形式的 Crouton 仅支持添加到 ViewGroup 的开始(第 0 项),但是您可以在 my github 找到对 Crouton 的“strayan”增强功能 DownUnderMode。 请注意,官方 Crouton 库和 DownUnderMode 版本有点不同步(希望在 2058 年接受 DownUnderMode 拉取请求时修复)。

    【讨论】:

      【解决方案5】:

      使用设计库,我们可以为 Android 2.1 及以后的所有版本实现。

      这是工作示例代码http://www.feelzdroid.com/2015/06/snackbar-android-example-using-design-support-library.html

      如果您需要任何帮助,请发表评论。

      【讨论】:

        【解决方案6】:

        这是在android中实现snackbar的简单方法

        步骤 1. 添加支持库 23 并使用

        编译您的项目
        compile 'com.android.support:appcompat-v7:23.0.1'
        

        第 2 步。在活动文件中添加坐标布局

        <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/coordinatorLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context=".MainActivity">
        
        
        </android.support.design.widget.CoordinatorLayout>
        

        第 3 步。现在在 MainActivity.java 中添加以下代码来实现小吃吧

        public class MainActivity extends AppCompatActivity {
        
            CoordinatorLayout coordinatorLayout;
        
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinatorLayout);
                ShowSnack();
            }
        
            public void ShowSnack() {
                Snackbar snackbar = Snackbar.make(coordinatorLayout, "Snackbar Label", Snackbar.LENGTH_LONG);
                snackbar.setAction("Action", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(MainActivity.this, "Action", Toast.LENGTH_LONG).show();
                    }
                });
                snackbar.setActionTextColor(Color.RED);
                View snackbarView = snackbar.getView();
                snackbarView.setBackgroundColor(Color.DKGRAY);
                TextView textView = (TextView) snackbarView.findViewById(android.support.design.R.id.snackbar_text);
                textView.setTextColor(Color.YELLOW);
                snackbar.show();
            }
        }
        

        希望这对你有用。

        更多安卓教程请关注此博客:Trinity Tuts

        【讨论】:

          猜你喜欢
          • 2019-03-18
          • 1970-01-01
          • 2012-07-31
          • 2022-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-14
          • 2017-05-07
          相关资源
          最近更新 更多