¿Cómo ocultar una vista mediante programación?

125

En mi solicitud, tengo 2 LinearLayout'justo uno encima del otro. A través de una opción de menú, quiero poder hacer que desaparezca el inferior y que el superior caiga sobre el desaparecido LinearLayout.

El problema es que no tengo idea de cómo hacer esto en Java.

No tiene que estar animado, quiero ocultar el Layoutregreso de otra actividad (el menú), en OnActivityResult. El menú activityestablece una booleanen la que me registro OnActivityResult, y de acuerdo con su valor, determino si necesito ocultar o mostrar la parte inferior 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.
    }
}

¿Alguien puede darme una pista o un enlace sobre cómo debo hacer esto?

ThaMe90
fuente

Respuestas:

324

Puedes llamar view.setVisibility(View.GONE) si desea eliminarlo del diseño.

O view.setVisibility(View.INVISIBLE) si solo quieres ocultarlo.

De documentos de Android :

INVISIBLE

Esta vista es invisible, pero aún ocupa espacio para fines de diseño. Usar con setVisibility(int)y android:visibility.

IDO

Esta vista es invisible y no ocupa espacio para el diseño. Usar con setVisibility(int)y android:visibility.

Erich Douglass
fuente
16
¿Puede el usuario seguir interactuando con él si está configurado en view.setVisibility (View.INVISIBLE)?
WhiskThimble
¿Puede una actividad, por ejemplo, realizar cambios en una vista si está configurada en GONE? Me imagino que podrías si está configurado como INVISIBLE.
moatista
1
¿Qué pasa en RelativeLayout? Las posiciones de las vistas dependen unas de otras. Me pregunto qué sucederá después de que desaparezca una vista.
Zin Win Htet
@ErPragatiSingh, siempre coloque el enlace desde donde copia y pega, y mantenga la respuesta similar a la que quería decir el OP. :)
Sufian
@Sufian gracias, todo desde el sitio oficial de desarrolladores de Android.
Prags
19

Prueba esto:

linearLayout.setVisibility(View.GONE);
SECADO
fuente
0

Solución Kotlin

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

Solución de extensión Kotlin

Si desea que tengan una longitud más consistente, trabaje para vistas anulables y reduzca la posibilidad de escribir el booleano incorrecto, intente usar estas extensiones personalizadas:

// 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
fuente