在片段内的TabHost中滑动效果

时间:2017-04-02 01:06:45

标签: java android android-fragments android-tabhost fragment-tab-host

我有一个NavigationDrawer,可以在单击按钮时打开片段。但是现在,我需要在其中一个片段中创建一个Tabhost。我从未使用TabHost,我找不到任何解释如何在片段内的一个TabHost中实现滑动效果的主题。在那之前,我配置了Tabhost但没有任何效果。如果你能解释我该怎么做,我会感激不尽。

PacksFragment.java

package studio.com.archeagemanager;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TabHost;
import android.widget.TextView;

/**
 * A simple {@link Fragment} subclass.
 */


public class PacksFragment extends Fragment {

    TabHost tabHost;

    public PacksFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_packs, container, false);

        TabHost host = (TabHost) view.findViewById(R.id.tabhost);
        host.setup();

        //Tab 1
        TabHost.TabSpec spec = host.newTabSpec("Tab One");
        spec.setContent(R.id.nuia);
        spec.setIndicator("NUIA");
        host.addTab(spec);

        //Tab 2
        spec = host.newTabSpec("Tab two");
        spec.setContent(R.id.haranya);
        spec.setIndicator("HARANYA");
        host.addTab(spec);

        //Tab 3
        spec = host.newTabSpec("Tab three");
        spec.setContent(R.id.oceanic);
        spec.setIndicator("OCEANIC");
        host.addTab(spec);

        //Tab 4
        spec = host.newTabSpec("Tab four");
        spec.setContent(R.id.auroria);
        spec.setIndicator("AURORIA");
        host.addTab(spec);

        for (int i=0; i<4; i++) {
            View tabView = host.getTabWidget().getChildTabViewAt(i);
            tabView.setPadding(0, 0, 0, 0);
            TextView tv = (TextView)tabView.findViewById(android.R.id.title);
            tv.setSingleLine();
            tv.setTextSize(14);
        }

        return view;
    }

}

1 个答案:

答案 0 :(得分:0)

在您的布局文件中fragments_pack只需根据您的要求添加带有水平滚动视图的标签主机

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp">

    <HorizontalScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/horizontalScrollView"
        android:fillViewport="true"
        android:scrollbars="none">

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

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp" />
</LinearLayout>