【问题标题】:How to make SnackBar in Android Fragment?如何在 Android Fragment 中制作 SnackBar?
【发布时间】:2021-03-23 12:50:41
【问题描述】:
如何在Android Fragment中制作SnackBar?
我应该在什么上下文中调用它?
override fun onTaskLongClick(task: Task) {
Snackbar.make(view!!.rootView, "Long Click removed...", Snackbar.LENGTH_LONG).show()
}
这段代码仍然可以工作,但它涵盖了软键。
【问题讨论】:
标签:
android
kotlin
android-fragments
android-snackbar
【解决方案1】:
错误的方式1。
override fun onTaskLongClick(task: Task) {
Snackbar.make(view!!.rootView, "Long Click removed...", Snackbar.LENGTH_LONG).show()
}
此代码将涵盖手机的软件按钮。完全不好。
错误的方式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()
}
在activity_main.xml布局中添加id并通过findviewbyid调用布局。这种方式就像我们一直认为的那样正常工作。
【解决方案2】:
您传递一个不是CoordinatorLayout 的视图,Snackbar 将向上遍历树,直到找到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();