是否有一种方法可以在所有其他视图之上绘制视图



我想知道是否有一种方法可以在所有其他视图之上绘制视图,即使它属于其他视图涵盖的视图组?谢谢。

我找到了解决我的情况的解决方案,但是它仍然有不必要的效果,即在其范围之外绘制的视图周围绘制一些黑色像素。似乎我必须将这些视图移至涵盖我所需要的领域的父景观中……无论如何,这就是我要尝试的事情:

@Override protected void dispatchDraw(Canvas canvas)
{
    Rect clip=new Rect(); getDrawingRect(clip);
    int saveCount=canvas.save(Canvas.CLIP_SAVE_FLAG);
    canvas.clipRect(clip,Region.Op.REPLACE);
    super.dispatchDraw(canvas);
    canvas.restoreToCount(saveCount);
}

该功能属于包含我想在其父母执行的原始界限之外绘制的子视图组的视图组。如果您想对视图使用不同的界限,则可以更改为任何内容。

使用ViewGroup.bringChildToFront(View child)。尽管这在LinearLayout中没有所需的效果,因为Z顺序直接链接到排序顺序,因此在这种情况下,它只是将View移至底部。

我之前与您有同样的问题,现在我从这个线程中得到了答案。什么是android.widget.framelayout

Android将应用于Framelayout(其ID是Android.r.id.content),我们可以称其为ContentView。您可以通过" HierarchyViewer"看到它,它是一个工具/Android-SDK/Tools/允许检查视图层次结构。您可以看到您的应用程序放置在Framelayout中。

您可以从其当前ViewGroup中删除任何视图并添加到ContentView。

您可以执行以下操作:

//Remove view from current viewgroup
WebView mWebView = (WebView)findViewById(id);
ViewGroup currentParent = (ViewGroup)mWebView.getParent();
currentParent.removeView(mWebView);
//Add the view to ContentView(android.R.id.content)
FrameLayout contentView = (FrameLayout)this.getDecorView().findViewById(android.R.id.content);
FrameLayout.LayoutParams fl = new FrameLayout.LayoutParams(MATCH_PARENT,MATCH_PARENT);
contentView.addView(mWebView,fl);

希望这个有帮助。

最新更新