你如何实现底部有按钮的snackbar?

Posted

技术标签:

【中文标题】你如何实现底部有按钮的snackbar?【英文标题】:How do you implement the snackbar that has the button at the bottom? 【发布时间】:2017-12-04 04:35:57 【问题描述】:

在材料设计规范中,底部有一个按钮。你如何实现它?

这是规范中的图片。我说的是最后一个。

【问题讨论】:

你不能使用默认的 Snackbar。但是,您可以使用自定义布局创建自己的:***.com/a/41154330/321354 【参考方案1】:

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();

【讨论】:

如果我添加一个非常长的消息和一个与您的一样长的按钮,我会在我添加的图像上得到第三个示例,而不是第四个。 有用的答案!!【参考方案2】:

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

https://***.com/a/54177574/869451

如果链接丢失,我将在此处复制解决方案:

        <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>

【讨论】:

【参考方案3】:

我已经编写了一个库来做到这一点。它还包括队列系统。试试看https://github.com/tingyik90/snackprogressbar。

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

【讨论】:

以上是关于你如何实现底部有按钮的snackbar?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置小吃栏和浮动操作按钮之间的距离?

如何在对话框覆盖的底部添加 SnackBar

在 Flutter 中打开应用程序时如何显示 Snackbar 或底部工作表?

制作“从底部滑动”按钮(类似于snackbar)(Android)

如何在底部栏上方显示 Snackbar?

Android - 我的 Snackbar 出现在底部导航栏的前面而不是它的上方,如何解决?