开发者

Set fragments' positions in android activities

I have a fragment that should be shown in an activity under another fragment

In the xml of the fragment I tried to use:

<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>

(please note android:layout_below="@id/first_fragment" in the layout tag)

I have also tried this:

<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"
    andro开发者_StackOverflow中文版id: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>

(please note android:layout_below="@id/first_fragment" in the TextView tag)

in both cases the application compile and run but the second fragment is shown on the top of the screen instead of after the first one.

Please consider that I'm adding the fragments programmatically by using FragmentTransaction and I add the second fragment after having added the first one, but in the same transaction

Can you please tell me what's wrong?

Thank-you


You can use a FrameLayout (viewGroup) in your activity xml to hold your fragment, then add your fragment object using add or replace

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

So you can align as you wish


I fixed it doing this. In the layout I used:

<?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>

then in the activity:

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();


This may be help,

<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" />

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜