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

Я поставил visibility чтобы невидимый, как это на Android:

myImageView.setVisibility(View.INVISIBLE);

А затем сделать это видимым:

myImageView.setVisibility(View.VISIBLE);

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

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

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

4 ответа

Решение

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

View.VISIBLE Вид видимый.

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

View.GONE Вид исчез, вы его не видите, и он не занимает "место".

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

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

Или вы можете просто использовать

View.isShown()

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

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", который сообщит вам значение.

Другие вопросы по тегам