Как программно скрыть View?

125

В моем приложении у меня есть 2 точки LinearLayoutдруг над другом. С помощью параметра меню я хочу, чтобы нижний исчез, а верхний выпадал поверх исчезнувшего LinearLayout.

Проблема в том, что я понятия не имею, как это сделать на Java.

Его не нужно анимировать, я хочу скрыть Layoutвозвращение другого действия (меню) в OnActivityResult. В меню activityзадается элемент, booleanпо которому я регистрируюсь OnActivityResult, и в соответствии с его значением я определяю, нужно ли мне скрыть или показать нижнюю часть Layout:

// Only change value if it is different from what it was.
if(mUseVolumeButtonAsPTT != resultData.getBoolean("UseVolumeButtonAsPTT")){
    mUseVolumeButtonAsPTT = resultData.getBoolean("UseVolumeButtonAsPTT");
    if(!mUseVolumeButtonAsPTT){
        // Hide lower LinearLayout.
    } else {
        // Show lower LinearLayout.
    }
}

Может ли кто-нибудь дать мне подсказку или ссылку, как мне это сделать?

ThaMe90
источник

Ответы:

324

Вы можете позвонить, view.setVisibility(View.GONE)если хотите удалить его из макета.

Или view.setVisibility(View.INVISIBLE)если вы просто хотите это скрыть.

Из Android Docs :

INVISIBLE

Этот вид невидим, но он все равно занимает место для разметки. Используйте с setVisibility(int)и android:visibility.

УШЕЛ

Этот вид невидим и не занимает места для разметки. Используйте с setVisibility(int)и android:visibility.

Эрих Дуглас
источник
16
Может ли пользователь по-прежнему взаимодействовать с ним, если для него установлено значение view.setVisibility (View.INVISIBLE)?
WhiskThimble
Может ли действие, например, вносить изменения в представление, если для него установлено значение GONE? Я полагаю, вы могли бы, если бы он был НЕВИДИМЫМ.
moatist
1
А что насчет RelativeLayout? Позиции взглядов зависят друг от друга. Интересно, что будет после того, как вид исчезнет.
Zin Win Htet
@ErPragatiSingh, пожалуйста, всегда помещайте ссылку, откуда вы копируете и вставляете, и сохраняйте ответ, аналогичный тому, как хотел сказать OP. :)
Sufian
@Sufian спасибо, все это с официального сайта разработчика Android.
Prags
19

Попробуй это:

linearLayout.setVisibility(View.GONE);
вьюжный
источник
0

Котлин Решение

view.isVisible = true
view.isInvisible = true
view.isGone = true

// For these to work, you need to use androidx and import:
import androidx.core.view.isVisible // or isInvisible/isGone

Kotlin Extension Solution

Если вы хотите, чтобы они были более согласованной длины, работали с представлениями, допускающими значение NULL, и снизили вероятность написания неправильного логического значения, попробуйте использовать эти настраиваемые расширения:

// Example
view.hide()

fun View?.show() {
    if (this == null) return
    if (!isVisible) isVisible = true
}

fun View?.hide() {
    if (this == null) return
    if (!isInvisible) isInvisible = true
}

fun View?.gone() {
    if (this == null) return
    if (!isGone) isGone = true
}
Gibolt
источник