Como ocultar uma exibição programaticamente?

125

Na minha inscrição, eu tenho 2 LinearLayoutacima um do outro. Por meio de uma opção de menu, quero fazer com que a parte inferior desapareça e a superior desça sobre a desaparecida LinearLayout.

O problema é que não tenho idéia de como fazer isso em Java.

Não precisa ser animado, quero ocultar o Layoutretorno de outra atividade (o menu), em OnActivityResult. O menu activitydefine um booleanno qual eu faço check-in OnActivityResulte, de acordo com seu valor, eu determino se preciso ocultar ou mostrar a 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.
    }
}

Alguém pode me dar uma dica ou um link sobre como devo fazer isso?

ThaMe90
fonte

Respostas:

324

Você pode ligar view.setVisibility(View.GONE)se quiser removê-lo do layout.

Ou view.setVisibility(View.INVISIBLE)se você apenas quer escondê-lo.

No Android Docs :

INVISÍVEL

Essa visualização é invisível, mas ainda ocupa espaço para fins de layout. Use com setVisibility(int)e android:visibility.

FOI

Essa visualização é invisível e não ocupa espaço para fins de layout. Use com setVisibility(int)e android:visibility.

Erich Douglass
fonte
16
O usuário ainda pode interagir com ele se estiver definido como view.setVisibility (View.INVISIBLE)?
precisa saber é o seguinte
Uma atividade, por exemplo, pode fazer alterações em uma visualização se estiver definida como GONE? Eu imagino que você poderia se estiver definido como INVISÍVEL.
moatist
1
E o RelativeLayout? As posições das vistas dependem uma da outra. Eu me pergunto o que acontecerá depois que uma visão acabar.
Zin Win Htet
@ErPragatiSingh, sempre coloque o link de onde você copia e cola e mantenha a resposta semelhante à que o OP queria dizer. :)
Sufian
Obrigado @Sufian, tudo no site oficial do desenvolvedor Android.
Prags
19

Tente o seguinte:

linearLayout.setVisibility(View.GONE);
DRiFTy
fonte
0

Solução 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

Solução de extensão Kotlin

Se você deseja que eles tenham um comprimento mais consistente, trabalhe para visualizações nulos e reduza a chance de escrever o booleano errado, tente usar estas extensões 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
fonte