如何在 Android 片段中制作 SnackBar?

How to make SnackBar in Android Fragment?

如何在 Android 片段中制作 SnackBar?

我应该调用什么上下文?

 override fun onTaskLongClick(task: Task) {        
        Snackbar.make(view!!.rootView, "Long Click removed...", Snackbar.LENGTH_LONG).show()
    }

这段代码无论如何都可以工作,但它覆盖了软键。

方法错误1.

 override fun onTaskLongClick(task: Task) {        
        Snackbar.make(view!!.rootView, "Long Click removed...", Snackbar.LENGTH_LONG).show()
    }

这段代码会覆盖phone的软件按钮。完全一点都不好。

方法2错误

override fun onTaskLongClick(task: Task) {     
Snackbar.make(activity!!.findViewById(android.R.id.content), "Long Click removed..."
, Snackbar.LENGTH_LONG).show()
    }

这种方式貌似可以正常使用,但是它覆盖了浮动按钮,用户无法移除。 这意味着用户必须等到 SnackBar 消失。与 activity_main 相比,android.R.id.content 的布局似乎不同。

正确的方法!

override fun onTaskLongClick(task: Task) {       
        Snackbar.make(activity!!.findViewById(R.id.activity_main), "Long Click removed...", Snackbar.LENGTH_LONG).show()
    }

将 id 添加到 activity_main.xml 布局并通过 findviewbyid 调用布局。这种方式和我们一直想的一样正确。

您传递的视图不是 CoordinatorLayoutSnackbar 将沿着树向上移动,直到找到 CoordinatorLayout 或布局的根。

  rootlayout = (CoordinatorLayout) rootView.findViewById(R.id.coordinatorLayout);

Snackbar

Snackbar snackbar = Snackbar.make(rootlayout , "Snackbar test", Snackbar.LENGTH_SHORT);
                            View sbView = snackbar.getView();
                            TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
                            textView.setTextColor(Color.YELLOW);
                            snackbar.show();