@schwiz Wie können wir in diesem Fall die Ansichts-IDs zurücksetzen? Mein Problem ist, dass die Ansichts-ID erhöht wird, selbst wenn meine Aktivität beendet ist, wenn die nächste Ansicht hinzugefügt wird. Ich möchte, dass die Ansichts-ID standardmäßig auf 1 gesetzt wird, wenn ich wieder zu dieser Aktivität zurückkehre .
AndroidNewBee
Vielen Dank für diese Antwort gab
hem
ViewGroup erweitert View implementiert ViewParent, ViewManager. Schöner, es mit Casting zu (ViewGroup) zu nennen
Mercury
23
Verwenden Sie ViewStub und geben Sie das Layout der Ansicht an, die Sie umschalten möchten. Sehen:
Wenn Sie ein- oder ausblenden möchten, können Sie .setVisibility (View.INVISIBLE) und .setVisibility (View.VISIBLE) verwenden. Wenn die Ansicht unsichtbar ist, kann der Benutzer nicht mit ihr interagieren.
Dennisschagt
Angenommen, ich habe eine Textansicht mit einem angehängten onClickListener. Wenn ich es verschwinden lasse und dann darauf tippe, wird das Ereignis dann immer noch ausgelöst?
ahitt6345
22
Dies ist der beste Weg
LinearLayout lp =newLinearLayout(this);
lp.addView(newButton(this));
lp.addView(newImageButton(this));// Now remove them
lp.removeViewAt(0);// and so on
Wenn Sie ein XML-Layout haben, müssen Sie es nicht dynamisch hinzufügen
Was wird der Unterschied in Bezug auf die Leistung sein? Ich meine den Leistungsunterschied, wenn man sie dynamisch hinzufügt oder in eine statische XML-Layoutdatei einfügt und sie aufblasen lässt?
Stdout
19
Um einem Layout eine Ansicht hinzuzufügen, können Sie die addViewMethode der ViewGroupKlasse verwenden. Beispielsweise,
Es gibt auch eine Reihe von Entfernungsmethoden. Überprüfen Sie die Dokumentation von ViewGroup . Eine einfache Möglichkeit, die Ansicht aus einem Layout zu entfernen, kann sein:
layout.removeAllViews();// then you will end up having a clean fresh layout
Es hat mein Problem behoben, mehr als jede andere Antwort. Nützlich, wenn wie ich Ihr Hintergrund oder einige Parameter verhindern, dass die Ansicht vollständig verschwindet.
Virthuss
1
Dies liegt daran, dass View.GONE die Ansicht für das Layout nicht entfernt, sondern nur unsichtbar macht und keinen Platz für Layoutzwecke benötigt.
Victor
6
Großartige Antwort von Sameer und Abel Terefe. Wenn Sie jedoch eine Ansicht entfernen, möchten Sie nach meiner Option eine Ansicht mit einer bestimmten ID entfernen. Hier ist, wie machst du das?
1, geben Sie der Ansicht eine ID, wenn Sie sie erstellen:
Hallo, wenn Sie neu in Android sind, verwenden Sie diese Methode. Wenden Sie Ihre Ansicht an, um sie verschwinden zu lassen. GEGANGEN ist eine Möglichkeit. Andernfalls greifen Sie auf die übergeordnete Ansicht zu und entfernen Sie das untergeordnete Element von dort. Andernfalls rufen Sie das übergeordnete Layout ab und verwenden Sie dieses Methode und entferne alle untergeordneten parentView.remove (untergeordneten)
Ich würde vorschlagen, den GONE-Ansatz zu verwenden ...
Antworten:
Ich habe es so gemacht:
quelle
(ViewGroup)
:)Verwenden Sie ViewStub und geben Sie das Layout der Ansicht an, die Sie umschalten möchten. Sehen:
Verschwinden:
quelle
Dies ist der beste Weg
Wenn Sie ein XML-Layout haben, müssen Sie es nicht dynamisch hinzufügen
quelle
Um einem Layout eine Ansicht hinzuzufügen, können Sie die
addView
Methode derViewGroup
Klasse verwenden. Beispielsweise,Es gibt auch eine Reihe von Entfernungsmethoden. Überprüfen Sie die Dokumentation von ViewGroup . Eine einfache Möglichkeit, die Ansicht aus einem Layout zu entfernen, kann sein:
quelle
Zum Ändern der Sichtbarkeit:
Zum Entfernen:
quelle
Großartige Antwort von Sameer und Abel Terefe. Wenn Sie jedoch eine Ansicht entfernen, möchten Sie nach meiner Option eine Ansicht mit einer bestimmten ID entfernen. Hier ist, wie machst du das?
1, geben Sie der Ansicht eine ID, wenn Sie sie erstellen:
2, entfernen Sie die Ansicht mit der ID:
quelle
Sie können addView oder removeView verwenden
Java:
Kotlin:
quelle
Hallo, wenn Sie neu in Android sind, verwenden Sie diese Methode. Wenden Sie Ihre Ansicht an, um sie verschwinden zu lassen. GEGANGEN ist eine Möglichkeit. Andernfalls greifen Sie auf die übergeordnete Ansicht zu und entfernen Sie das untergeordnete Element von dort. Andernfalls rufen Sie das übergeordnete Layout ab und verwenden Sie dieses Methode und entferne alle untergeordneten parentView.remove (untergeordneten)
Ich würde vorschlagen, den GONE-Ansatz zu verwenden ...
quelle
Ich entferne die Ansicht mit der Start- und Zählmethode. Ich habe 3 Ansichten im linearen Layout hinzugefügt.
view.removeViews (0, 3);
quelle
Wiederverwendbare Kotlin-Verlängerungslösung
Vereinfachen Sie das Entfernen
Fügen Sie diese Erweiterung hinzu:
Vereinfachen Sie das Hinzufügen
Hier sind einige Optionen:
quelle