2016-06-20 67 views
0

我的應用程序有兩個標籤,堅持屏幕的底部。只要連接到選項卡的兩個片段中的一個片段被另一個片段替換,這些選項卡就會到達屏幕的頂部。AppCompatActivity與底部的標籤獲取到標籤頂部,每當一個片段被替換

這裏是我的代碼替換片段:

// Create fragment and give it an argument for the selected article 
AudioPlayback newFragment = new AudioPlayback(); 

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack so the user can navigate back 
transaction.replace(R.id.container, newFragment); 
transaction.addToBackStack(null); 
      transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
// Commit the transaction 
transaction.commit(); 

這裏是我的容器佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" android:padding="0dip" 
    android:gravity="center_horizontal" 
    android:id="@+id/container" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 
    <android.support.v4.view.ViewPager 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     /> 
    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="fixed" 
     app:tabIndicatorHeight="3px" 
     app:tabIndicatorColor="@android:color/holo_blue_dark" 
     app:tabGravity="fill" /> 
</LinearLayout> 

我用它獲取的主要活動實現的接口更換片段。這是正確和成功完成的。

你能提供一些建議,說明如何在片段被替換後將標籤保持在最底部?

+1

我認爲你的容器不在佈局xml中的正確位置。你能分享一下佈局文件嗎? –

+0

嗨Arpit,我用上面的容器代碼編輯了我的問題。基本上,容器是嵌入ViewPager和TabLayout的LinearLayout。 – Malloc

回答

0

這是預期的行爲,只要您在此佈局中添加片段,這些標籤就會向上移動。如果您想要在兩個製表符在xml中進行以下更改之前進行分片。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" android:padding="0dip" 
    android:gravity="center_horizontal" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 
    <FrameLayout android:id="@+id/container" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 
    <android.support.v4.view.ViewPager 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     /> 
    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="fixed" 
     app:tabIndicatorHeight="3px" 
     app:tabIndicatorColor="@android:color/holo_blue_dark" 
     app:tabGravity="fill" /> 
</LinearLayout> 
+0

嗨,這次替換片段將顯示在替換片段的正上方。無論如何,以全屏顯示片段? – Malloc

+0

只需啓動僅包含此片段的新活動。 –

+0

不是我想要遵循的方式。不過謝謝! – Malloc