Android L 中是不是有 Snackbars 的代码,或者我们是不是应该自己实现它们?

Posted

技术标签:

【中文标题】Android L 中是不是有 Snackbars 的代码,或者我们是不是应该自己实现它们?【英文标题】: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 员工的博客说随着时间的推移可能会有更多更新,但奇怪的是还没有。 【参考方案1】:

2015 年 5 月 29 日更新:

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

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

原答案

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

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

https://github.com/nispok/snackbar

希望对你有帮助!

【讨论】:

Snackbars 支持最近添加到 Android 支持库修订版 22.2.0:developer.android.com/reference/android/support/design/widget/…【参考方案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_
    android:layout_
    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

【讨论】:

以上是关于Android L 中是不是有 Snackbars 的代码,或者我们是不是应该自己实现它们?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BroadcastReceiver 中添加 Snackbars?

Android 多行 Snackbar

Typescript 3.7.2、React 和 Material UI 4.5.1 Snackbars - 尝试弹出错误但得到样式错误

连续的 Material-UI Snackbars(使用 React-Redux)

Android L怎么样

如何在材料文档中创建 Snackbar?