我知道如何使用view . getrootview()获得根视图。我也能够从一个按钮的onClick事件中获得视图,其中参数是一个视图。但是我如何在活动中获得视图呢?
当前回答
从当前活动获取根视图。
在我们的活动中,我们可以通过以下方式获得根视图:
ViewGroup rootView = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
or
View rootView = getWindow().getDecorView().getRootView();
其他回答
另一个Kotlin扩展解决方案
如果你的activity的视图是在xml中声明的(ex activity_root.xml),打开xml并给根视图分配一个id:
android:id="@+id/root_activity"
现在在你的类中,使用以下方法导入视图:
import kotlinx.android.synthetic.main.activity_root.root_activity
现在可以使用root_activity作为视图。
以防有人需要更简单的方法:
下面的代码给出了整个活动的视图:
[View]
要在活动中获取某个视图,例如在活动中获取imageView,只需添加你想要获取的视图的id:
View v1 = getWindow().getDecorView().getRootView().findViewById(R.id.imageView1);
希望这对大家有所帮助
Kotlin扩展解决方案
使用它来简化活动中的访问。然后你可以直接从Activity或Activity中引用rootView。它外面的rootView:
val Activity.rootView get() = window.decorView.rootView
如果你想为Fragments添加相同的一致性,添加:
val Fragment.rootView get() = view?.rootView
如果你在一个活动中,假设只有一个根视图,你可以像这样得到它。
ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
然后可以将其强制转换为真正的类
或者你可以用
getWindow().getDecorView();
注意这将包括动作栏视图,你的视图在动作栏视图下面
在Kotlin中,我们可以做得更短一些:
val rootView = window.decorView.rootView
推荐文章
- 如何隐藏动作栏之前的活动被创建,然后再显示它?
- 是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
- 在Android中将字符串转换为Uri
- 如何在NestedScrollView内使用RecyclerView ?
- 移动到另一个EditText时,软键盘下一步点击Android
- Android应用中的GridView VS GridLayout
- Activity和FragmentActivity的区别
- 右对齐文本在android TextView
- 权限拒绝:start前台需要android.permission.FOREGROUND_SERVICE
- 如何更改android操作栏的标题和图标
- Android Split字符串
- 让一个链接在安卓浏览器启动我的应用程序?
- 如何在Android工作室的外部库中添加一个jar ?
- GridLayout(不是GridView)如何均匀地拉伸所有子元素
- 如何让一个片段删除自己,即它的等效完成()?