如何实现底部带有按钮的Snackbar?

16

在material design规范中,有一个将按钮放在底部的提示框(snackbar)。如何实现它?

这里是规范中的图片,我指的是最后一个。 enter image description here


1
你不能使用默认的Snackbar。但是你可以使用自定义布局创建自己的Snackbar:https://dev59.com/questions/4FwY5IYBdhLWcg3wlolg#41154330 - rciovati
3个回答

26

Android会自动调整描述文本的大小,但不能自动调整ActionButton文本的大小。因此,如果按钮文本增加,Android将自己创建此类型的布局。

这里是一个简单的例子 ->

Snackbar snackbar = Snackbar
        .make(mainLayout, "Confirm delete?", Snackbar.LENGTH_LONG)
        .setAction("YES", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar mSnackbar = Snackbar.make(mainLayout, "Message successfully deleted.", Snackbar.LENGTH_SHORT);
                mSnackbar.show();
            }
        });
 
snackbar.show();

1
如果我添加一个非常长的消息和一个与您的长度差不多的按钮,我得到的是我添加的图像上的第三个示例,而不是第四个。 - casolorz
有帮助的答案!! - Stuti Kasliwal

2

我已经编写了一个库,可以实现这一点。它还包括队列系统。请尝试https://github.com/tingyik90/snackprogressbar

如果按钮宽度超过屏幕总宽度的25%,它会将操作放到下一行。如果需要,您可以自己修改我的代码。它在SnackProgressBarLayout.java下。


0

这个链接上的答案帮助我解决了问题。

https://dev59.com/MbHma4cB1Zd3GeqPFg0N#54177574

我将在此处复制解决方案,以防链接失效:
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <!-- Add this line -->
            <item name="maxActionInlineWidth">@dimen/design_snackbar_action_inline_max_width</item>
        </style>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接