Wie verstecke ich eine Ansicht programmgesteuert?

125

In meiner Bewerbung habe ich 2 LinearLayoutdirekt übereinander. Über eine Menüoption möchte ich in der Lage sein, die untere zu verschwinden und die obere über die verschwundene fallen zu lassen LinearLayout.

Das Problem ist, ich habe keine Ahnung, wie das in Java geht.

Es muss nicht animiert werden, ich möchte die LayoutRückkehr einer anderen Aktivität (das Menü) in verbergen OnActivityResult. Das Menü activitylegt eine fest, booleanbei der ich einchecke OnActivityResult, und anhand des Werts bestimme ich, ob ich den unteren Bereich ausblenden oder anzeigen muss 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.
    }
}

Kann mir jemand einen Hinweis oder einen Link geben, wie ich das machen soll?

ThaMe90
quelle

Antworten:

324

Sie können anrufen, view.setVisibility(View.GONE)wenn Sie es aus dem Layout entfernen möchten.

Oder view.setVisibility(View.INVISIBLE)wenn Sie es nur verstecken wollen.

Von Android Docs :

UNSICHTBAR

Diese Ansicht ist unsichtbar, nimmt jedoch für Layoutzwecke Platz ein. Verwenden Sie mit setVisibility(int)und android:visibility.

WEG

Diese Ansicht ist unsichtbar und nimmt für Layoutzwecke keinen Platz ein. Verwenden Sie mit setVisibility(int)und android:visibility.

Erich Douglass
quelle
16
Kann der Benutzer weiterhin damit interagieren, wenn view.setVisibility (View.INVISIBLE) eingestellt ist?
WhiskThimble
Kann eine Aktivität beispielsweise Änderungen an einer Ansicht vornehmen, wenn sie auf GONE gesetzt ist? Ich würde mir vorstellen, dass Sie es könnten, wenn es auf UNSICHTBAR eingestellt wäre.
Wassergraben
1
Was ist mit RelativeLayout? Die Positionen der Ansichten sind voneinander abhängig. Ich frage mich, was passieren wird, wenn ein Blick weg ist.
Zin Win Htet
@ErPragatiSingh Bitte setzen Sie immer einen Link von der Stelle, an der Sie kopieren und einfügen, und behalten Sie die Antwort ähnlich wie das OP sagen wollte. :)
Sufian
@ Sufian danke, alles von der offiziellen Website des Android-Entwicklers.
Prags
19

Versuche dies:

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

Kotlin-Lösung

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-Erweiterungslösung

Wenn Sie möchten, dass sie eine konsistentere Länge haben, für nullfähige Ansichten arbeiten und die Wahrscheinlichkeit verringern, dass ein falscher Boolescher Wert geschrieben wird, verwenden Sie die folgenden benutzerdefinierten Erweiterungen:

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