TabLayout使用二,写给互联网大厂员工的真心话

这个博客主要介绍了如何在Android应用中实现个人收藏管理功能,包括商品、人才、项目和供需等不同类型的收藏。通过创建多个Fragment实例,将它们添加到ArrayList中,并使用FragmentStatePagerAdapter作为ViewPager的适配器。同时,利用TabLayout实现标签切换,并为每个Tab设置自定义视图,展示图标和文字。此外,还展示了如何在TabLayout中设置可滚动模式,使得在多标签情况下能平滑滚动。

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

/**

  • 商品

*/

private CollectCommodityFragment mCommodity;

/**

  • 人才

*/

private CollectTalentsFragment mTalents;

/**

  • 项目

*/

private MyCollectFragment mProject;

/**

  • 供需

*/

private CollectSupplyDemandFragment mSupplyDemand;

private ArrayList mFragmentList;

/**

  • 适配器

*/

private DemandAdapter mAdapter;

private String[] stringName;

/**

  • 图标

*/

private int[] tabIcons = {

R.drawable.selector_tab,

R.drawable.selector_tab1,

R.drawable.selector_tab2,

R.drawable.selector_tab3,

R.drawable.selector_tab4,

R.drawable.selector_tab5

};

@Override

protected int getLayoutId() {

return R.layout.activity_my_collect;

}

@Override

protected void initData(Bundle savedInstanceState) {

super.initData(savedInstanceState);

stringName = getResources().getStringArray(R.array.my_collect_tab);

//初始化各fragment

mLive = CollectLiveFragment.newInstance();

mOnDemand = CollectOnDemandFragment.newInstance();

mCommodity = CollectCommodityFragment.newInstance();

mTalents = CollectTalentsFragment.newInstance();

mProject = MyCollectFragment.newInstance();

mSupplyDemand = CollectSupplyDemandFragment.newInstance();

//将fragment装进列表中

mFragmentList = new ArrayList<>();

mFragmentList.add(mLive);

mFragmentList.add(mOnDemand);

mFragmentList.add(mCommodity);

mFragmentList.add(mTalents);

mFragmentList.add(mProject);

mFragmentList.add(mSupplyDemand);

//设置TabLayout的模式 可滚动

// mTl.setTabMode(TabLayout.MODE_FIXED);

mTl.setTabMode(TabLayout.MODE_SCROLLABLE);

mAdapter = new DemandAdapter(getSupportFragmentManager());

//viewpager加载adapter

mVp.setAdapter(mAdapter);

//TabLayout加载viewpager

mTl.setupWithViewPager(mVp);

/**

  • 一定要在设置适配器之后设置Icon

*/

mTl.getTabAt(0).setCustomView(getTabView(0));

mTl.getTabAt(1).setCustomView(getTabView(1));

mTl.getTabAt(2).setCustomView(getTabView(2));

mTl.getTabAt(3).setCustomView(getTabView(3));

mTl.getTabAt(4).setCustomView(getTabView(4));

mTl.getTabAt(5).setCustomView(getTabView(5));

}

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)

@Override

protected void initView() {

setTitleText(getString(R.string.my_collect));

onShowTopBack(true);

}

public View getTabView(int position) {

View view = LayoutInflater.from(this).inflate(R.layout.item_tab, null);

ImageView iv_head = (ImageView) view.findViewById(R.id.iv_head);

TextView tv_item = (TextView) view.findViewById(R.id.tv_item);

TextView tv_number = (TextView) view.findViewById(R.id.tv_number);

tv_item.setText(st

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

ringName[position]);

if (position == 0) {

tv_number.setVisibility(View.VISIBLE);

} else {

tv_number.setVisibility(View.GONE);

}

iv_head.setImageResource(tabIcons[position]);

return view;

}

/**

  • 适配器

*/

public class DemandAdapter extends FragmentStatePagerAdapter {

public DemandAdapter(FragmentManager fm) {

super(fm);

}

@Override

public Fragment getItem(int position) {

return mFragmentList.get(position);

}

@Override

public int getCount() {

return mFragmentList.size();

}

// //此方法用来显示tab上的名字

// @Override

// public CharSequence getPageTitle(int position) {

// return getResources().getStringArray(R.array.my_collect_tab)[(position % mFragmentList.size())];

// }

}

}

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“wrap_content”

android:paddingBottom="@dimen/padding_5"

android:layout_height=“wrap_content”>

<ImageView

android:id="@+id/iv_head"

android:layout_width=“30dp”

android:layout_height=“30dp”

android:paddingLeft="@dimen/padding_5"

android:paddingRight="@dimen/padding_5"

android:paddingTop="@dimen/padding_5"

android:src="@drawable/icon_live_select" />

<TextView

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值