我正在使用com.android.support:design:22.2.0图书馆的Snackbar .我用它来撤消删除.为了让我的生活更轻松,我将使UI看起来实际上已从数据源中删除了内容,如果未按下小吃栏中的撤消按钮,则实际执行数据源中的删除操作.所以,我想知道什么时候Snackbar不再可见,所以删除这些项目是安全的.
我可以在Snackbar上调用getView(),但我不确定我应该使用什么样的监听器.我试过setOnSystemUiVisibilityChangeListener()但是没有用,我相信它只适用于系统状态栏.
此外,Snackbar无法扩展,因为它有一个私有构造函数.
android material-design snackbar android-design-library android-snackbar
来自文档:参数持续时间 - 可以是预定义长度之一:LENGTH_SHORT,LENGTH_LONG 或自定义持续时间(以毫秒为单位).但我无法设置自定义持续时间.
例如
Snackbar
.make(parentLayout, "Feed cat?", 8000) // try here
.setAction("Yes", snackOnClickListener)
.setActionTextColor(Color.MAGENTA)
.setDuration(8000) // try here
.show();
Run Code Online (Sandbox Code Playgroud)
但不是8秒,Snackbar很快就消失了.
我在android中使用Snackbar并且我已经实现了一个动作,以便用户可以撤消动作(动作是清除列表视图中的所有项目).将项目恢复并添加回列表视图已经完成并且工作正常.
我的问题是,项目存储在sqlite数据库中,如何从表中删除项目?(我怎么知道用户没有点击撤销按钮,这样我就可以从数据库中完全删除数据).
这是OnOptionsItemSelcted()中的代码
case R.id.action_clear:
final List<Word> temp = new ArrayList<Word>(data);
data.clear();
adapter.notifyDataSetChanged();
View view = findViewById(R.id.layoutFavWords);
Snackbar.make(view,"Deleted Saved Selection.", Snackbar.LENGTH_LONG).
setAction("Undo", new OnClickListener() {
@Override
public void onClick(View v) {
for(Word word:temp)
data.add(word);
adapter.notifyDataSetChanged();
}
}).show();
break;
Run Code Online (Sandbox Code Playgroud)
因此,如果用户在快餐栏的可见时段内没有单击撤消按钮,那么我需要从数据库中永久删除数据.
对此有何解决方案?
java android android-support-library snackbar android-design-library