Установить позиции фрагментов в деятельности Android - PullRequest
0 голосов
/ 10 октября 2011

У меня есть фрагмент, который должен быть показан в действии под другим фрагментом

В xml фрагмента, который я пытался использовать:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/second_fragment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10sp"
    android:layout_below="@id/first_fragment">  
    <TextView 
        android:id="@+id/mytext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" "
        android:focusable="false"
        android:clickable="false"
        android:textSize="20sp"
        android:padding="5sp"
        android:layout_centerHorizontal="true"/>    
</RelativeLayout>

(обратите внимание на android: layout_below =«@ id / first_fragment» в теге макета)

Я также пробовал это:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/first_fragment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10sp">     
    <TextView 
        android:id="@+id/mytext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" "
        android:focusable="false"
        android:clickable="false"
        android:textSize="20sp"
        android:padding="5sp"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/first_fragment"/>     
</RelativeLayout>

(обратите внимание на android: layout_below = "@ id / first_fragment" в теге TextView)

в обоих случаях приложение компилируется и запускается, но второй фрагмент отображается вверху экрана, а не после первого.

Обратите внимание, что я добавляю фрагменты программноиспользуя FragmentTransaction, и я добавляю второй фрагмент после добавления первого, но в той же транзакции

Подскажите, пожалуйста, в чем дело?

Спасибо

Ответы [ 3 ]

3 голосов
/ 11 октября 2011

Вы можете использовать FrameLayout (viewGroup) в xml своей активности для хранения вашего фрагмента, а затем добавить свой фрагментный объект, используя add или replace

fragmentTransaction.replace(R.id.frameLayoutId, yourFragmentObject);

Так что вы можете выровнять, как вы хотите

2 голосов
/ 18 октября 2011

Я исправил это, делая это. В макете я использовал:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout1" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <FrameLayout
        android:id="@+id/top"
        android:layout_width="fill_parent"
            android:layout_height="wrap_content">   
    </FrameLayout>  
    <FrameLayout
        android:id="@+id/bottom"
        android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@id/top"> 
    </FrameLayout>      
</RelativeLayout>

затем в деятельности:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
fr1= new Fragment1();
ft.add(R.id.top, fr1 , "top");
fr2 = new Fragment2();
ft.add(R.id.bottom, fr2, "bottom");     
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
getSupportFragmentManager().executePendingTransactions();
0 голосов
/ 10 октября 2011

Это может помочь,

<fragment class="com.example.android.hcgallery.TitlesFragment"
        android:id="@+id/frag_title"
        android:visibility="gone"
        android:layout_marginTop="?android:attr/actionBarSize"
        android:layout_width="@dimen/titles_size"
        android:layout_height="match_parent" />

<fragment class="com.example.android.hcgallery.ContentFragment"
        android:id="@+id/frag_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...