Wie kann ich ein Fragment als verborgen in einem XML-Layout deklarieren?

Meine Aktivität deklariert alle GUI-Fragmente in einem einzigen XML-Layout. Es muss nur ein paar der Fragmente zum Startzeitpunkt anzeigen. Der Rest wird gezeigt, wie der Benutzer mit der App interagiert. Ein Teil des Layouts ist wie folgt:

<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, dass das list_panel Fragment beim Start sichtbar ist und das detail_panel Fragment ausgeblendet ist, bis der Benutzer etwas aus der Liste auswählt.

  • OnKeyDown () Ausgabe
  • Android: Was für die Anfragecode-Werte zu wählen?
  • Volley und Bitmap-Caching
  • Bestimmen Sie, ob Android App zum ersten Mal verwendet wird
  • Kann ich den Text in einem Android-Layout unterstreichen?
  • NFC kann keine Daten senden Android 4.0.3
  • Standardmäßig beginnt ein Fragment mit dem isHidden Attribut als false. Das bedeutet, dass meine Aktivität durch die geladenen Fragmente iterieren muss und manuell auf isHidden(true) auf Fragmente wie detail_panel zur Startzeit detail_panel .

    Ich würde es vorziehen, den isHidden Status im XML-Layout zu deklarieren. Allerdings ändert android:visibility="gone" in einer <fragment> deklaration den isHidden Status nicht, und ich kann keine Dokumentation zu einem anderen Attribut finden, das den Trick machen würde.

    Ist es möglich, ein XML-Attribut auf ein <fragment> zu setzen, damit es versteckt wird?

    Anmerkung: Ich bin nicht mit Sicht Sichtbarkeit beschäftigt, ich beschäftige mich mit dem fragment.isHidden() Wert. Das beeinflusst, wie FragmentManager den Back Stack manipuliert und Animationen durchführt. Wenn Sie transaction.show(fragment) auf ein Fragment aufrufen transaction.show(fragment) dessen Ansicht unsichtbar oder gegangen ist, aber der fragment.isHidden() Wert falsch ist, dann wird der FragmentManager die Ansicht nicht sichtbar machen. Siehe http://developer.android.com/reference/android/app/Fragment.html#isHidden () als Referenz.

  • Ionischer Anzeigefehler, wenn gps ausgeschaltet ist
  • Welche Arbeit wurde bei der plattformübergreifenden mobilen Entwicklung erledigt?
  • Rechts nach links ProgressBar?
  • Sende Werte von ViewPager-Aktivität zu einem Fragment per Bündel
  • So speichern Sie das Bild in der SQLite-Datenbank
  • Rapid App Prototyping Tools für Android und iOS
  • 5 Solutions collect form web for “Wie kann ich ein Fragment als verborgen in einem XML-Layout deklarieren?”

    Ich hatte eine ähnliche Situation, wo ich ein Fragment verstecken musste.

    Ich habe einfach das Fragment in ein LinearLayout aufgenommen und das Layout markiert, um sichtbar / weg zu sein.

     <LinearLayout android:id="@+id/map_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="visible" > <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment" /> </LinearLayout> 

    Diese Antwort ist ein bisschen gedacht, dass es hilfreich sein kann für zukünftige Referenz. Sichtbarkeit ist Teil der View-Klasse – Fragment erweitert das Objekt, obwohl er keinen Zugriff auf die Sichtbarkeitswerte hat. Eine Möglichkeit macht das Fragment zu einem Kind von FrameLayout und ruft unsichtbar an oder geht auf das Layout. Dies wird dazu führen, dass das Fragment verborgen wird.

    Ich hoffe es hilft!

    Basierend auf JJos Post, verwenden Sie diese:

     FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); fragmentTransaction.hide(mFragment); fragmentTransaction.commit(); 

    Das hat für mich auf API Level 23 gearbeitet. 'MFragment' ist das Fragment, das du verstecken willst.

    Wir haben isVisible Methode für Fragment Seeting visibilty to Gone nimmt keinen Platz Wo als Invisble nimmt die tatsächliche Sicht Raum.

     public void showHideFrgament(final Fragment fragment){ FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out); if (fragment.isHidden()) { ft.show(fragment); Log.d("hidden","Show"); } else { ft.hide(fragment); Log.d("Shown","Hide"); } ft.commit(); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.