我想知道是否可以在我的Android应用程序的视图层次结构顶部添加视图。目前,我有一个从外部服务接收信息的类。我想将收到的信息显示为用户的自定义提醒。是否可以在全局视图层次结构的顶部插入此自定义视图,以便它显示在所有其他视图之上。我不想开始新的活动,只需在当前显示的内容上添加视图。
答案 0 :(得分:3)
是。访问根视图就像查找它一样简单。
在活动中:
FrameLayout root = (FrameLayout) findViewById(android.R.id.content);
由于root是FrameLayout
,因此您只需向其添加View
即可使其位于最前面。但请注意,如果在添加此视图后添加其他视图,则Z顺序将更改。在这种情况下,您必须使用ViewGroup#bringChildToFront(View view)
将其恢复到顶部。
修改强>
也可以使用View#getRootView()从另一个视图获取根视图。这并不总是可靠的,因为View可能没有附加到层次结构(在这种情况下,View本身就是根)。或者它的父级可能不在层次结构中(在这种情况下,父级本身将是根)。