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?
Typescript 3.7.2、React 和 Material UI 4.5.1 Snackbars - 尝试弹出错误但得到样式错误