Ele*_*uan 5 android android-layout android-view snackbar android-snackbar
如何防止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();
Run Code Online (Sandbox Code Playgroud)
这是实现此目的的一种较干净的解决方案,不需要反射。它基于已知Snackbar中按钮的视图ID。该版本适用于支持库的27.1.1版本,但是如果将更改视图ID,则在以后的版本中可能不再可用!
首先,使用一个空的OnClickListener设置点心栏操作:
snackbar.setAction("Save", new View.OnClickListener() {
@Override
public void onClick(View v) {}
});
Run Code Online (Sandbox Code Playgroud)
然后,在小吃店中添加一个回调(在显示之前)。覆盖onShown函数,使用查找按钮R.id.snackbar_action,然后向其中添加自己的OnClickListener。仅当手动调用时snackbar.dismiss(),或者如果将快餐栏连接到CoordinatorLayout(如何禁用划动是另一个不同的问题)时,才通过滑动来关闭快餐栏。
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2254 次 |
| 最近记录: |