Как я могу проверить, если вид виден или нет в Android? [дубликат]


этот вопрос уже есть ответ здесь:

  • Android: Как проверить, виден ли вид внутри ScrollView? 11 ответов

Я visibility невидимый, как это на Android:

myImageView.setVisibility(View.INVISIBLE);

и затем, чтобы сделать его видимым:

myImageView.setVisibility(View.VISIBLE);

теперь я не знаю, если myImageView виден или нет, как я могу проверить это вот так:

if (myImageView IS VISIBLE) {
    Do something
} else {
    Do something else
}

как я могу это сделать? Что я должен написать в скобках?

4 153

4 ответа:

Хотя Вид.getVisibility () действительно получает видимость, это не просто true/false. Вид может иметь свою видимость, установленную на одну из трех вещей.

вид.Видимый Представление отображается на экране.

вид.Невидимый Вид невидим, но любой интервал, который он обычно занимает, все равно будет использоваться. Его "невидимка"

вид.Ушел Вид исчез, вы не можете его видеть, и он не занимает "место."

Итак, чтобы ответить на ваш вопрос, вы ищете:

if (myImageView.getVisibility() == View.VISIBLE) {
    // Its visible
} else {
    // Either gone or invisible
}

или вы могли бы просто использовать

View.isShown()

Если изображение является частью макета это может быть "вид.Видимый", но это не значит, что он находится в пределах видимого экрана. Если это то, что вам нужно; это будет работать:

Rect scrollBounds = new Rect();
scrollView.getHitRect(scrollBounds);
if (imageView.getLocalVisibleRect(scrollBounds)) {
    // imageView is within the visible window
} else {
    // imageView is not within the visible window
}

вы бы использовали соответствующий метод getVisibility(). Имена методов с префиксом " get " и " set " являются соглашением Java для представления свойств. Некоторые языки имеют фактические языковые конструкции для свойств, но Java не является одним из них. Поэтому, когда вы видите что-то с надписью "setX", вы можете быть на 99% уверены, что есть соответствующий "getX", который сообщит вам значение.