1

Hallo Leute, ich spielte mit Fragmenten in Android.
Ich habe gelesen, dass es zwei Möglichkeiten gibt, ein Fragment in einer Aktivität zu binden.
1) mit <fragment> Tag im Layout (XML) -Datei.
2) mit FragmentManager und FragmentTransaction.
Ich möchte, dass meine Aktivität das Fragment dynamisch behandelt, also ging ich für den zweiten Ansatz.
Wenn jedoch ein Fragment hinzugefügt wird, wird es in RelativeLayout Activity (das Standardverhalten von RelativeLayout) in die linke obere Ecke eingefügt. Ich möchte, dass mein Fragment in der Mitte des Aktivitätslayouts angezeigt wird. Ich kann einfach nicht herausfinden, wie man fragmet in JAVA-Code Position geben kann. auch ich in Stackoverflow sah,wie man die Position des Fragments in der Mitte in RelativeLayout setzt

die --RelativeLayout.LayoutParams verwendet

, die mit View-Objekten (Button, Textview usw.) scheint zu funktionieren.
Irgendwelche Vorschläge.

+1

Schwer zu sagen, ohne auf dem Code und das Layout der Suche XML (Hinweis: Sie könnten diese hinzufügen), aber die triviale Lösung besteht darin, ein 'FrameLayout' als Fragment-Container hinzuzufügen und 'layout_centerHorizontal = "true" 'und' layout_centerVertical = "true" 'zu verwenden, um' FrameLayout' zu positionieren innerhalb der Kapselung 'RelativeLayout'. – dhke

Antwort

0

Verwenden Sie im Layout Ihrer Aktivität das Attribut android:layout_gravity="center" für RelativeLayout, in dem sich Fragment befindet. Dadurch wird das gesamte untergeordnete Element in der Mitte angezeigt.

3

Sie können einen Platzhalter FrameLayout innerhalb RelativeLayout in Ihrem XML festlegen und mit android:layout_centerInParent="true" ausrichten. Dann ersetzen Sie diese Platzhalter mit Ihrem Fragmente im Code FragmentTransaction#replace(int containerViewId, Fragment fragment, String tag)

in Ihrer Tätigkeit XML-Layout:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
    <FrameLayout 
     android:id="@id/fragment" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true"/> 
</RelativeLayout> 

In Ihrer Aktivitätsklasse:

getFragmentManager().beginTransaction() 
       .replace(R.id.fragment, new MyFragment()) 
       .commit(); 
Verwandte Themen