Як приховати перегляд програмно?


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.
    }
}

Чи може хто-небудь надати мені підказку чи посилання про те, як мені це зробити?

Відповіді:


324

Ви можете зателефонувати, view.setVisibility(View.GONE)якщо ви хочете видалити його з макета.

Або view.setVisibility(View.INVISIBLE)якщо ви просто хочете це приховати.

З Документів Android :

НЕВИДИМО

Цей погляд невидимий, але він все ще займає місце для цілей компонування. Використовувати з setVisibility(int)і android:visibility.

ДОБРО

Цей погляд невидимий, і він не займає місця для цілей компонування. Використовувати з setVisibility(int)і android:visibility.


16
Чи може користувач все-таки взаємодіяти з ним, якщо йому встановлено view.setVisibility (View.INVISIBLE)?
WhiskThimble

Чи може, наприклад, діяльність змінити подання, якщо для нього встановлено значення GONE? Я б міг уявити, що ти можеш, якщо це встановлено на НЕВИДИМО.
moatist

1
А як щодо RelativeLayout? Позиції переглядів залежать одна від одної. Цікаво, що буде після перегляду.
Zin Win Htet

@ErPragatiSingh, будь-ласка, завжди посилайте посилання з того місця, де ви копіюєте та вставляєте, і залишайте відповідь схожим на те, як хотіла сказати ОП. :)
Суфіан

@Sufian спасибі, все це з офіційного сайту розробника Android.
Праги


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

Якщо ви хочете, щоб вони були більш послідовної довжини, працюйте над змінними видами та знижуйте шанс написання неправильного булевого сигналу, спробуйте скористатися цими розширеннями:

// 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
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.