Articles of android snackbar

有没有办法在Snackbar上添加图标?

这是我的Snackbar代码: Snackbar.make(viewHolder.productView, “Some Text Here ..”, Snackbar.LENGTH_SHORT) .setAction(“I want be a icon here instead TEXT”, new View.OnClickListener() { @Override public void onClick(View v) { // Perform anything for the action selected } }) .show(); 无论如何在.setAction添加图标而不是文本? 我知道谷歌建议不要在Snackbar中使用图标 ,但我想使用它。

什么时候使用Snackbar isQueued()? (如何排队小吃店)

如果我连续多次调用快餐栏,则只显示最后一个零食栏项目。 例如,使用下面的代码,仅显示第3项。 对于第1项和第2项,似乎忽略了Snackbar.LENGTH_LONG(并设置为零?)。 Snackbar.make(view, “Item 1”, Snackbar.LENGTH_LONG).show(); Snackbar.make(view, “Item 2”, Snackbar.LENGTH_LONG).show(); Snackbar.make(view, “Item 3”, Snackbar.LENGTH_LONG).show(); 但在谷歌文档中 ,我发现可以对消息进行排队。 public boolean isShownOrQueued () Returns whether this Snackbar is currently being shown, or is queued to be shown next. 那么我们如何实际排队小吃店呢?

SnackBar和fitsSystemWindow

我有一个使用fitsSystemWindows的应用程序能够在Navigation-和Status-Bar后面绘制背景 – 不幸的是,SnackBar似乎忽略了容器中的fitsSystemWindows = true。 我将问题归结为这个最小的应用程序: 样式: @color/accent_material_dark false true true 布局: 活动: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { Snackbar.make(v,”This Snackbar should fitSystemWindows”,Snackbar.LENGTH_INDEFINITE).show(); } }); } } 有人知道一些解决方法吗? 我发布了最小的应用程序来显示这里的问题: https : //github.com/ligi/SnackBarFitsSystemWindowProblem

支持库中的Snackbar不包含OnDismissListener()?

我想在最新的设计支持库中实现新的Snackbar,但是它的提供方式对我来说似乎是违反直觉的,而且我认为很多其他人使用它。 当用户执行重要操作时,我想允许他们通过Snackbar撤消它,但似乎没有办法检测它何时被解除以执行操作。 我可以通过以下方式进行操作: 用户采取行动。 显示Snackbar并更新UI,就像操作已完成一样(即看起来数据已发送到数据库,但实际上还没有)。 如果用户按下“撤消”,则还原UI更改。 如果没有,当Snackbar被解散时,它将发送数据。 但是因为我没有看到任何可访问的OnDismissListener,所以我必须: 用户采取行动。 立即将信息发送到数据库并更新UI。 如果用户按下“撤消”,则向数据库发送另一个调用以删除刚刚添加的数据并恢复UI更改。 我真的想避免必须对数据库进行两次调用,只需在应用程序知道它是安全的时候发送一个(用户已经避免按“撤消”)。 我注意到通过EventListener在第三方库中实现了这一点,但我真的很想坚持使用Google库。

如何防止我的snackbar文本在Android上被截断?

我正在显示一个带有相当长文本消息的快餐栏,并且在纵向模式下在手机上它看起来很好。 但是在平板电脑上它似乎只允许1行文本,因此它被省略了 无论如何我可以在平板电脑风景中获得2线?

在没有视图的情况下制作小吃吧?

我想在用户打开谷歌地图活动时立即显示一个小吃吧,但事实是活动中没有视图用作活动的第一个参数(在Snackbar.make()的findViewById()中) 。 我该放什么? 这是java类代码: public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { private GoogleMap mMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); // Obtain the SupportMapFragment and get notified when the map is ready to be used. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; […]

将所有布局包装在CoordinatorLayout中是一个好习惯吗?

我正在考虑在我的应用中实现Android Snackbars的方法。 基本上,我希望能够在应用程序的任何位置显示Snackbar。 正如我发现的那样, android.support.design.widget.Snackbar在放入android.support.design.widget.CoordinatorLayout时表现最佳。 否则,我无法将其滑开,它显示在导航抽屉上,并且不与浮动操作按钮交互。 所以问题是: 将所有布局包装在CoordinatorLayout是一个好习惯,在BaseActivity中获取它的引用,以便它可以从几乎任何地方传递到Snackbar吗? 这似乎是确保Snackbar和其他布局组件正常运行的可靠方法,但是……好吧,意味着触摸所有布局并具有一个BaseActivity,该BaseActivity由所有其他活动扩展,并且可以从任何想要显示的片段访问小吃吧。 有没有更好的办法?

使用Espresso测试Snackbar节目

有没有办法使用Espresso测试小吃店出现的正确文字? 我有一个简单的电话来创建一个小吃吧 Snackbar.make(mView, “My text”, Snackbar.LENGTH_LONG).show(); 我没有运气就试过这个 onView(withText(“My text”)).inRoot(withDecorView(not(is(mActivityRule.getActivity().getWindow().getDecorView())))).check(matches(isDisplayed()));

Snackbar动作文本颜色不变

我想更改我的零食栏的动作文字颜色,但由于某种原因它不起作用。 我使用以下代码显示快餐栏: Snackbar.make(findViewById(R.id.root), “text”, Snackbar.LENGTH_LONG).setActionTextColor(R.color.yellow).setAction(“OK”, new View.OnClickListener() { @Override public void onClick(View view) { } }).show();

如何在Snackbar或Toast / Textview中显示表情/表情符号

我正在尝试在Snackbar / Toast通知中添加表情/表情符号。 这个表情符号是否需要图像资源或Unicode字符。 当我从下面的网站Unicode字符网站使用Unicode字符时,我得到string输出。 Snackbar.make(findViewById(android.R.id.content), \U+1F601 + "Done", Snackbar.LENGTH_LONG).show();