Lal*_*ith 604 android view android-activity
我知道如何使用View.getRootView()获取根视图.我也能从一个按钮的onClick
事件中获取视图,其中参数是一个视图.但是如何在活动中获取视图?
Dmi*_*nko 1003
如果您需要您的活动的根视图(因此您可以在那里添加您的内容)使用
findViewById(android.R.id.content).getRootView()
Run Code Online (Sandbox Code Playgroud)
另据报道,在某些设备上你必须使用
getWindow().getDecorView().findViewById(android.R.id.content)
Run Code Online (Sandbox Code Playgroud)
代替.
请注意,正如Booger报道的那样,这可能在某些设备上的导航栏(带后退按钮等)后面(但在大多数设备上似乎不是这样).
如果您需要获取使用setContentView()
方法添加到活动中的视图,那么就像pottedmeat写的那样,您可以使用
final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
Run Code Online (Sandbox Code Playgroud)
但最好只在xml布局中将id设置为此视图并改为使用此id.
pot*_*eat 259
这是我用来获取分配的XML文件中的根视图setContentView
:
final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
Run Code Online (Sandbox Code Playgroud)
Sud*_*lan 127
我在android 4.0.3中测试过这个,只有:
getWindow().getDecorView().getRootView()
Run Code Online (Sandbox Code Playgroud)
给出我们得到的相同的观点
anyview.getRootView();
com.android.internal.policy.impl.PhoneWindow$DecorView@#########
Run Code Online (Sandbox Code Playgroud)
和
getWindow().getDecorView().findViewById(android.R.id.content)
Run Code Online (Sandbox Code Playgroud)
给孩子的
android.widget.FrameLayout@#######
Run Code Online (Sandbox Code Playgroud)
请确认.
Jor*_*sys 30
在我们的活动中,我们可以获得以下root
视图:
ViewGroup rootView = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
Run Code Online (Sandbox Code Playgroud)
要么
View rootView = getWindow().getDecorView().getRootView();
Run Code Online (Sandbox Code Playgroud)
小智 17
只是因为有人需要一种更简单的方法:
以下代码提供了整个活动的视图:
View v1 = getWindow().getDecorView().getRootView();
要在活动中获取certian视图,例如活动中的imageView,只需添加要获取的视图的ID:
View v1 = getWindow().getDecorView().getRootView().findViewById(R.id.imageView1);
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人
Art*_*nev 16
在Kotlin,我们可以做得更短一些:
val rootView = window.decorView.rootView
Run Code Online (Sandbox Code Playgroud)
对于那些使用数据绑定库的人来说,要获取当前活动的根,只需使用:
View rootView = dataBinding.getRoot();
Run Code Online (Sandbox Code Playgroud)
对于 Kotlin 用户来说,这就更简单了:
val rootView = dataBinding.root
Run Code Online (Sandbox Code Playgroud)
使用它来简化活动中的访问。那么你可以直接rootView
从Activity中引用,或者activity.rootView
在它之外引用:
val Activity.rootView get() = window.decorView.rootView
Run Code Online (Sandbox Code Playgroud)
如果您想为 Fragments 添加相同的内容以保持一致性,请添加:
val Fragment.rootView get() = view?.rootView
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
502593 次 |
最近记录: |