我知道如何使用View.getRootView()获取根视图。我也可以从按钮的onClick事件中获取视图,其中参数是查看。但是我如何在活动中获取查看?
onClick
如果您需要活动的根视图(以便您可以在那里添加内容)使用
findViewById(android.R.id.content).getRootView()
据报道,在某些设备上,您必须使用
getWindow().getDecorView().findViewById(android.R.id.content)
相反。
请注意,正如Booger报告的那样,这可能在某些设备上的导航栏(带有后退按钮等)后面(但在大多数设备上似乎不是)。
如果您需要使用setContentView()方法获取添加到活动中的视图,那么正如potted肉所写的那样,您可以使用
setContentView()
final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this .findViewById(android.R.id.content)).getChildAt(0);
但最好在xml布局中将id设置为此视图并使用此id。
这是我用来获取根视图的,如在分配有setContentView的XML文件中所示:
setContentView
我在android 4.0.3中测试了这个,只有:
getWindow().getDecorView().getRootView()
给我们提供相同的观点
anyview.getRootView(); com.android.internal.policy.impl.PhoneWindow$DecorView@#########
和
给孩子其
android.widget.FrameLayout@#######
请确认。
只是incase有人需要一个更简单的方法:
下面的代码给出了整个活动的视图:
View v1 = getWindow().getDecorView().getRootView();
要在活动中获取一个视图,例如活动中的ImageView,只需添加您想要获取的视图的ID:
View v1 = getWindow().getDecorView().getRootView().findViewById(R.id.imageView1);
希望这能帮助到别人
如果你在一个活动中,假设只有一个根视图,你可以像这样得到它。
ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this .findViewById(android.R.id.content)).getChildAt(0);
你就可以把它投到你真正的班级
或者你可以用
getWindow().getDecorView();
请注意,这将包括actionbar视图,您的视图位于actionbar视图下方
在我们的活动中,我们可以获得root视图:
root
ViewGroup rootView = (ViewGroup) ((ViewGroup) this .findViewById(android.R.id.content)).getChildAt(0);
或
View rootView = getWindow().getDecorView().getRootView();
获取当前活动的视图
在任何onClick中,我们将获得“View view”,通过使用“view”获得rootView。
view.getRootView();
并在片段中获取View
查看视图=FragmentClass.get视图();
anyview.getRootView();将是最简单的方法。
anyview.getRootView();
在静态编程语言中,我们可以做得更短:
val rootView = window.decorView.rootView
使用它来简化活动中的访问。然后您可以直接从活动中引用rootView,或在其外部引用activity.rootView:
rootView
activity.rootView
val Activity.rootView get() = window.decorView.rootView
如果您想为Fragments添加相同的一致性,请添加:
val Fragment.rootView get() = view?.rootView
对于那些使用数据绑定库的人,要获取当前活动的根,只需使用:
View rootView = dataBinding.getRoot();
对于静态编程语言用户,它甚至更简单:
val rootView = dataBinding.root
如果您的活动视图是在xml中声明的(例如activity_root.xml),请打开xml并为根视图分配一个id:
activity_root.xml
android:id="@+id/root_activity"
现在在你的类中,使用以下方法导入视图:
import kotlinx.android.synthetic.main.activity_root.root_activity
您现在可以使用root_activity作为视图。
root_activity