findViewById(android.R.id.content)在Snackbar中做什么?

时间:2019-02-17 15:23:43

标签: java android

我已经在Snackbars中看到了这个findViewById(android.R.id.content)参数的传递。我们无法通过getContext()方法,因为它需要一个View参数。我在互联网上看到程序员在Snackbar内部传递了这个参数,这真的意味着什么?

此外,由于它询问一个View参数,因此我可以像我在xml文件中的任何视图一样通过,例如,任何imageview或任何videoView。如果我将这些参数作为参数传递,我的代码是否仍然有效?如果是的话,那么在代码中关于实际发生的事情是否有点解释?

1 个答案:

答案 0 :(得分:0)

  

这到底是什么意思?

它要求托管活动找到ID为android.R.id.content的窗口小部件。所有活动都有其中之一,由框架Activity的实现及其相关的Window设置。它代表了活动的主要内容区域。

  

关于实际发生的事情在代码中是否有点解释?

当然,欢迎您在代码中添加注释以解释您的选择。

The Snackbar documentation解释了View的作用:

  

Snackbar将尝试从提供给view的值中找到一个父视图来保存Snackbar的视图。 Snackbar将沿着视图树走,试图找到合适的父级,将其定义为CoordinatorLayout或窗口装饰的内容视图,以先到者为准。

     

在视图层次结构中具有CoordinatorLayout可使Snackbar启用某些功能,例如滑动到关闭和自动移动小部件。

考虑到这一点...

  

我可以像我在xml文件中拥有的任何视图一样通过吗,例如任何imageview或videoView。如果我将这些参数作为参数传递,我的代码还能继续工作吗?

也许。这取决于您的应用程序的用户界面。如果要与CoordinatorLayout一起使用特定的Snackbar,请将其(或孩子)传递给make()。否则,任何小部件都应该起作用。