Meine Aktivität deklariert alle GUI-Fragmente in einem einzigen XML-Layout. Es muss nur einige der Fragmente zum Zeitpunkt des Starts anzeigen; Der Rest wird angezeigt, wenn der Benutzer mit der App interagiert. Ein Teil des Layouts ist wie folgt:Wie kann ich ein Fragment als in einem XML-Layout verborgen deklarieren?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment
android:id="@+id/map_panel"
android:name="com.example.MapPanel"
android:layout_width="match_parent"
android:layout_height="@dimen/map_panel_height" />
<fragment
android:id="@+id/list_panel"
android:name="com.example.ListPanel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/map_panel" />
<fragment
android:id="@+id/detail_panel"
android:name="com.example.DetailPanel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/map_panel"
android:visibility="gone" />
Meine Absicht ist es, dass das list_panel
Fragment beim Start zu sehen ist, und das detail_panel
Fragment ist verborgen, bis der Benutzer etwas aus der Liste auswählt.
Standardmäßig beginnt ein Fragment mit dem Attribut isHidden
als false. Das bedeutet, dass meine Aktivität die geladenen Fragmente durchlaufen muss und beim Start isHidden(true)
auf Fragmenten wie detail_panel
manuell aufruft.
Ich würde lieber den isHidden
Status im XML-Layout deklarieren. Die Einstellung android:visibility="gone"
in einer <fragment>
Deklaration ändert jedoch nicht den isHidden
Status, und ich kann keine Dokumentation zu einem anderen Attribut finden, das den Trick machen würde.
Ist es möglich, ein XML-Attribut auf einem <fragment>
zu setzen, damit es ausgeblendet wird?
Hinweis: Ich bin nicht mit Sicht Sicht betroffen, ich bin mit der fragment.isHidden()
Wert betroffen. Das beeinflusst, wie FragmentManager den Backstack manipuliert und Animationen ausführt. Wenn Sie transaction.show(fragment)
für ein Fragment aufrufen, dessen Ansicht nicht sichtbar oder nicht vorhanden ist, aber der Wert fragment.isHidden()
falsch ist, macht der FragmentManager die Sicht nicht sichtbar. Siehe http://developer.android.com/reference/android/app/Fragment.html#isHidden() als Referenz.
haben Sie versucht, Android: Sichtbarkeit = "unsichtbar"? – Sushil
Ja, ich habe "unsichtbar" zusätzlich zu "weg" versucht. Keine beeinflussen den isHidden-Status des Fragments. –
Was meinst du mit "zusätzlich zu weg". hast du gerade versucht "unsichtbar". In diesem Fall wird das Fragment erzeugt und im unsichtbaren Zustand gehalten. – Sushil