我在HorizontalScrollView
中有一些按钮我想在HorizontalScrollView
的两端显示导航箭头。如果0索引处的子项完全可见,则当用户从左向右滚动并且0索引处的子项不可见时,左箭头应该是不可见的,然后再次显示左箭头相同的逻辑适用于右侧箭头。
我试过下面的代码:
private boolean isViewVisible(HorizontalScrollView hs, View view) {
Rect scrollBounds = new Rect();
hs.getHitRect(scrollBounds);
if (!view.getLocalVisibleRect(scrollBounds)
|| scrollBounds.height() < view.getHeight()) {
return false;
} else {
return true;
}
}
它工作正常,如果可见单个像素视图或部分视图,则返回true。
然后我在下面的代码中尝试了FULLY可见,但它适用于ScrollView
而不适用于HorizontalScrollView
private boolean isViewVisible(View view) {
Rect scrollBounds = new Rect();
mScrollView.getDrawingRect(scrollBounds);
float top = view.getY();
float bottom = top + view.getHeight();
if (scrollBounds.top < top && scrollBounds.bottom > bottom) {
return true;
} else {
return false;
}
}
我想更改HorizontalScrollView
的上述代码。
感谢
答案 0 :(得分:0)
这个问题来自几个月前,所以我假设你找到了答案,但也许会帮助别人。
这对我有用:
private boolean isViewVisible(View view) {
Rect scrollBounds = new Rect();
yourHorizontalScrollView.getDrawingRect(scrollBounds);
int rightEdge = view.getRight();
int leftEdge = rightEdge - view.getWidth();
int width = view.getWidth();
if ((scrollBounds.right > (rightEdge + width) && scrollBounds.left < leftEdge)) {
return true;
} else {
return false;
}
}