我知道如何使用view . getrootview()获得根视图。我也能够从一个按钮的onClick事件中获得视图,其中参数是一个视图。但是我如何在活动中获得视图呢?
当前回答
在Kotlin中,我们可以做得更短一些:
val rootView = window.decorView.rootView
其他回答
在Kotlin中,我们可以做得更短一些:
val rootView = window.decorView.rootView
Kotlin扩展解决方案
使用它来简化活动中的访问。然后你可以直接从Activity或Activity中引用rootView。它外面的rootView:
val Activity.rootView get() = window.decorView.rootView
如果你想为Fragments添加相同的一致性,添加:
val Fragment.rootView get() = view?.rootView
获取当前活动的视图
在任何onClick我们将得到“视图视图”,通过使用“视图”得到rootView。
View View = View . getrootview ();
并在片段中获取View
View view = FragmentClass.getView();
对于那些正在使用数据绑定库的人来说,要获得当前活动的根,只需使用:
View rootView = dataBinding.getRoot();
对于Kotlin用户来说,它甚至更简单:
val rootView = dataBinding.root
如果你需要根视图你的活动(所以你可以添加你的内容)使用
findViewById(android.R.id.content).getRootView()
此外,据报道,在某些设备上,你必须使用
getWindow().getDecorView().findViewById(android.R.id.content)
代替。
请注意,正如Booger所报告的,这可能在某些设备上位于导航栏后面(带有返回按钮等)(但在大多数设备上似乎不是这样)。
如果你需要使用setContentView()方法获取你添加到你的活动的视图,然后作为pottedmeat写你可以使用
final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
但最好在xml布局中设置id为这个视图,并使用这个id。
推荐文章
- 在android中从上下文获取活动
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 按钮背景是透明的
- 在Mac OS X上哪里安装Android SDK ?
- 我如何获得图像缩放功能?
- 在Android应用程序中显示当前时间和日期
- BottomSheetDialogFragment的圆角
- 在应用程序启动时出现“无法获得BatchedBridge,请确保您的bundle被正确打包”的错误
- 我如何改变默认对话框按钮的文本颜色在安卓5
- 更改单选按钮的圆圈颜色
- 如何在android中复制一个文件?
- adb找不到我的设备/手机(MacOS X)
- 如何在新的材质主题中改变背面箭头的颜色?
- androidviewpager与底部点