如何在Fragments中添加可滑动的标签?

时间:2017-04-13 10:28:27

标签: android android-fragments tabs

我正在使用FragmentTabHost在Fragment

中添加标签

以下是我的代码:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTabHost;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ExploreFragment extends Fragment {

    private FragmentTabHost mTabHost;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        View rootView = inflater.inflate(R.layout.fragment_explore, container, false);

        mTabHost = (FragmentTabHost) rootView.findViewById(android.R.id.tabhost);
        mTabHost.setup(getActivity(), getChildFragmentManager(), android.R.id.tabcontent);

        mTabHost.addTab(mTabHost.newTabSpec("fragmentb").setIndicator("Fragment B"),
                ContactUsFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("fragmentc").setIndicator("Fragment C"),
                MyProfileFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("fragmentd").setIndicator("Fragment D"),
                RaiseCampaignFragment.class, null);


        return rootView;
    }
}

我的xml就像:

<android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom" />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />
    </LinearLayout>
</android.support.v4.app.FragmentTabHost>

我已成功添加3个标签,但我无法刷卡或者说它们无法刷卡。

如何使标签可以滑动?

请帮助!!

2 个答案:

答案 0 :(得分:2)

您可以使用Support Library中提供的ViewPager窗口小部件在应用中创建滑动视图。 ViewPager是一个布局窗口小部件,其中每个子视图都是布局中的单独页面(单独的选项卡)。

要使用ViewPager设置布局,请在XML布局中添加<ViewPager>元素。例如,如果滑动视图中的每个页面都应使用整个布局,那么您的布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<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="match_parent" />

要插入代表每个页面的子视图,您需要将此布局挂钩到PagerAdapter

结帐Creating Swipe Views with Tabs了解更多详情。

答案 1 :(得分:0)

试试这个,

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/toolbar"
    android:layout_above="@+id/tab_layout"/>

<android.support.design.widget.TabLayout
    android:id="@+id/tab_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>