gpt4 book ai didi

android - 防止 Snackbar 在点击操作时关闭

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:35:41 28 4
gpt4 key购买 nike

如何防止 Android Snackbar 在 setAction onclick 上关闭,谢谢

Snackbar.make(rootlayout, "Hello SnackBar!", Snackbar.LENGTH_INDEFINITE)
.setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View v) {
// Snackbar should not dismiss
}
})
.show();

最佳答案

这里有一个更简洁的解决方案来实现这一点,它不需要反射。它基于了解 Snackbar 中按钮的 View ID。 这适用于支持库的 27.1.1 版,但如果 View ID 发生更改,可能在未来的版本中不再适用!

首先,使用一个空的 OnClickListener 设置您的 snackbar Action :

snackbar.setAction("Save", new View.OnClickListener() {
@Override
public void onClick(View v) {}
});

然后,添加回调到 snackbar(在显示之前)。覆盖 onShown 函数,使用 R.id.snackbar_action 找到按钮并向其添加您自己的 OnClickListener。只有在手动调用 snackbar.dismiss() 时,或者如果 snackbar 附加到 CoordinatorLayout 时通过滑动,snackbar 才会被关闭(如何禁用滑动是一个不同的 SO 问题)。

snackbar.addCallback(new BaseTransientBottomBar.BaseCallback<Snackbar>() {
@Override
public void onShown(Snackbar transientBottomBar) {
super.onShown(transientBottomBar);

transientBottomBar.getView().findViewById(R.id.snackbar_action).setOnClickListener(new View.OnClickListener() {
// your code here
}

关于android - 防止 Snackbar 在点击操作时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40103271/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com