每当更换片段时,底部有选项卡的AppCompatActivity都会将标签放到顶部

时间:2016-06-20 18:37:37

标签: android android-fragments 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 个答案:

答案 0 :(得分: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>