2016-05-11 10 views
0

Ich habe ein FrameLayout als definierte folgenden:Hinzufügen Raum zwischen Fragmenten mit einem Layout in Android

<FrameLayout 
    android:id="@+id/fragment_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

Ich habe ein Verfahren, das mehrere Fragmente zu diesem Layout hinzufügen kann, wie folgt:

private void setView(Fragment... fragments) { 
    FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

    for (Fragment f : fragments) { 
     transaction.add(R.id.fragment_container, f).commit(); 
    } 
} 

Alle meine Fragmente werden auf der Benutzeroberfläche gerendert, aber sie sind übereinander, wie kann ich sie horizontal mit dem Abstand zwischen ihnen ausrichten?

+0

Ich denke, dass Sie das mit Viewpager tun können – Masum

Antwort

0

Ich sehe 2 Optionen, die dafür funktionieren könnten. Die erste Option ist die Verwendung eines ViewPager, um die Fragmente in einer ausgelagerten horizontalen Komponente anzuzeigen. Wenn Sie im Voraus wissen, wie viele Fragmente hinzugefügt werden, müssen Sie mehrere Rahmenlayout-Container verwenden und die Fragmente diesen Containern hinzufügen.

0

Zuerst müssen Sie FrameLayout mit Linearlayout, oder verwenden Sie ein Linearlayout als Kind FrameLayout

<LinearLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:height="match_parent" 
     android:orientation="horizontal"> 
    </LinearLayout> 

und zweitens

private void setView(Fragment... fragments) { 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

     for (Fragment f : fragments) { 
      transaction.add(R.id.fragment_container, f, "unique_string_for_each_fragment"); 
     } 

     transaction.commit(); 
    } 

ersetzen Wenn Sie bieten nicht die eindeutige ID für jede add() Operation, dann überlagert es jedes Fragment über dem anderen.

Hoffe, das hilft!

CR.

Verwandte Themen