Android在Fragment中使用Tab

本文介绍了一种使用ViewPagerIndicator库在Android Fragment中快速实现Tab的方法,包括文字标题、文字标题加图标和小点指示灯效果,并提供了滑动自动切换标签的配置。通过添加库、设置布局、初始化数据以及覆写Adapter来完成Tab的创建。同时,还给出了改变字体颜色的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tab使用非常常见,实现方式也很多,这里分享一种使用ViewPagerIndicator快速实现tab的方法,并且可以根据需要实现不同的效果,包括文字title、文字title+图标、小点指示灯,并可以实现滑动自动切换标签效果。
来张效果截图:


添加tab步骤如下:
1、添加使用ViewPagerIndicator库(AS中直接导入library)
2、Fragment布局文件fragment.xml中添加
<com.viewpagerindicator.TabPageIndicator
    android:id="@+id/indicator"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    />

<android.support.v4.view.ViewPager
    android:id="@+id/fragmentviewpager"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="1" />
3、fragment中加载xml文件,并使用库中包含的style
在OnCreateView函数中添加
final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.StyledIndicators);
LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper);

View view = localInflater.inflate(R.layout.activity_order, null);
initView(view);
initData();
return view;
initView函数如下:
private void initView(View view){
    mViewPager = (ViewPager) view.findViewById(R.id.fragmentviewpager);
    mIndicator = (TabPageIndicator) view.findViewById(R.id.indicator);
}
initData函数如下:
private void initData() {
    FragmentManager mFm = getChildFragmentManager();
    List<Fragment> fragments = new ArrayList<Fragment>();
    fragments.add(Fragment1.getInstance());
    fragments.add(Fragment2.getInstance());
    fragments.add(Fragment3.getInstance());
    MyAdapter mAdapter = new MyAdapter(mFm, fragments, getActivity());
    mViewPager.setAdapter(mAdapter);
    mIndicator.setViewPager(mViewPager);
}
4、覆写Adapter
class MyAdapter extends FragmentPagerAdapter {

    private List<Fragment> fragments;
    private Context context;
    private static final int[] CONTENT = {R.string.home, R.string.message, R.string.me};

    private String getContent(int resId) {
        return context.getString(resId);
    }

    public OrderAdapter(FragmentManager fm, List<Fragment> fragments, Context context) {
        super(fm);
        this.fragments = fragments;
        this.context = context;
    }

    @Override
    public Fragment getItem(int arg0) {
        return fragments.get(arg0);
    }

    @Override
    public int getCount() {
        return fragments.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return getContent(CONTENT[position]);
    }

}

字体颜色更改方法:
1、在drawable中添加tab_color_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:state_selected="true" android:color="#f9a202"></item>
    <item android:state_selected="false" android:color="#000000"></item>

</selector>
2、在对应的sytle下(如使用TabPage,修改CustomTabPageIndicator)更改

<item name="android:textColor">@drawable/tab_color_selector</item>
备注:如果将xml文件放在color目录下,对应的style设置为@color/tab_color_selector


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值