Я немного застрял в этом вопросе - в первую очередь, эта ссылка была полезной, однако я столкнулся с некоторой проблемой с видимостью:
Ссылка: Проверить видимость просмотра
У меня есть вид прокрутки (родительский) и ряд под-представлений (LinearLayout
→ TableLayout
) и т.д. В XML файле (android:visibility="gone"
) есть несколько элементов, которые я установил View.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
-
-
-
Конечно, очень вероятно, что я полностью об этом поменяю - в основном я просто хочу убедиться, что scrollview позиционирует себя так, чтобы вид, который стал видимым, можно увидеть в нем целиком.
Если какая-либо другая информация требуется, дайте мне знать!