我对此有点坚持 - 首先,以下链接很有用,但是我提出了一些可见性问题:
链接:检查视图可见性
我有一个滚动视图(父视图)和一些子视图(LinearLayout
-> )等。我在 XMLTableLayout
中设置了许多项目( )。View.GONE
android:visibility="gone"
我有一些简单的代码来确定它是否可见,getVisibility()
但是当我将项目设置为View.VISIBLE
并尝试立即getDrawingRect()
得到一个全线为零的 Rect 时。任何进一步的点击都会获得正确的坐标。
现在这可能是因为从未绘制过视图(如 XML 中定义的那样)导致它不返回任何坐标,但是我View.VISIBLE
在尝试确定屏幕可见性之前进行了设置。是不是我需要从 onDraw() 中获得某种回调?或者也许设置代码中隐藏项的视图可见性。有点烦人;(
一些代码:
Rect scrollBounds = new Rect();
scroll.getHitRect(scrollBounds);
Rect viewBounds = new Rect();
if (view.getVisibility() == View.GONE) {
view.setVisibility(View.VISBLE)
viewBounds.getDrawingRect(viewBounds);
if (!Rect.intersects(scrollBounds, viewBounds) {
// do somthing
}
}
布局区域如下:
ScrollView
LinearLayout
TableLayout
Button
HiddenView
当然,我很有可能完全走错了路——基本上我只是想确保滚动视图自身定位,以便可以完整地看到已经变得可见的视图。
如果需要任何其他信息,请告诉我!