Android-TabLayout使用小结
2017-05-15 01:51
417 查看
TabLayout是Google发布的Android Support Design库里的一个控件,它控件非常强大,既可以用来实现TabPageIndicator的效果,也可以作为底部导航条使用。下面将来详细讲述一下它的用法:
![](https://github.com/Mr-ycx/Resources/blob/master/TabLayout_1.gif?raw=true)
核心代码:
![](https://github.com/Mr-ycx/Resources/blob/master/TabLayout_2.gif?raw=true)
核心代码:
完整代码:http://download.csdn.net/detail/y472360651/9842376
1.TabLayout实现TabPageIndicator效果
![](https://github.com/Mr-ycx/Resources/blob/master/TabLayout_1.gif?raw=true)
核心代码:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_vpager); viewPager = (ViewPager)findViewById(R.id.viewPager); tabLayout = (TabLayout)findViewById(R.id.tab_layout); fragments[0] = new HomeFragment(); fragments[1] = new MessageFragment(); fragments[2] = new PlayerFragment(); fragments[3] = new MineFragment(); /** * 切忌不可这样写: * tabLayout.addTab(tabLayout.newTab().setText("xxx")); * 否则文字将显示不出来 **/ tabLayout.addTab(tabLayout.newTab()); tabLayout.addTab(tabLayout.newTab()); tabLayout.addTab(tabLayout.newTab()); tabLayout.addTab(tabLayout.newTab()); adapter = new PagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); tabLayout.getTabAt(0).setText("首页"); tabLayout.getTabAt(1).setText("消息"); tabLayout.getTabAt(2).setText("视频"); tabLayout.getTabAt(3).setText("我的"); } private class PagerAdapter extends FragmentPagerAdapter { public PagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragments[position]; } @Override public int getCount() { return fragments.length; } }
2.TabLayout+Fragment实现页面切换效果:
![](https://github.com/Mr-ycx/Resources/blob/master/TabLayout_2.gif?raw=true)
核心代码:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_frag); tabLayout = (TabLayout) findViewById(R.id.tab_layout); fragments[0] = new HomeFragment(); fragments[1] = new MessageFragment(); fragments[2] = new PlayerFragment(); fragments[3] = new MineFragment(); tabLayout.addTab(tabLayout.newTab().setCustomView(R.layout.item_tablayout)); tabLayout.addTab(tabLayout.newTab().setCustomView(R.layout.item_tablayout)); tabLayout.addTab(tabLayout.newTab().setCustomView(R.layout.item_tablayout)); tabLayout.addTab(tabLayout.newTab().setCustomView(R.layout.item_tablayout)); tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { onItemSelected(tab.getPosition()); onItemSelectedState(tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } }); setTabTitles(); onItemSelected(0); onItemSelectedState(0); } private void onItemSelected(int position) { FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.container, fragments[position]); transaction.commit(); } private void onItemSelectedState(int position) { clearTabItemSelectedState(); View itemView = tabLayout.getTabAt(position).getCustomView(); ImageView imageView = (ImageView)itemView.findViewById(R.id.item_image); TextView name = (TextView)itemView.findViewById(R.id.item_name); imageView.setImageResource(drawablesSelected[position]); name.setTextColor(getResources().getColor(R.color.colorSelected)); } private void clearTabItemSelectedState() { for (int i = 0; i < tabLayout.getTabCount(); i++) { View itemView = tabLayout.getTabAt(i).getCustomView(); ImageView imageView = (ImageView) itemView.findViewById(R.id.item_image); TextView name = (TextView)itemView.findViewById(R.id.item_name); imageView.setImageResource(drawables[i]); name.setTextColor(getResources().getColor(R.color.colorNormal)); } } private void setTabTitles() { for (int i = 0; i < 4; i++) { View itemView = tabLayout.getTabAt(i).getCustomView(); ImageView imageView = (ImageView) itemView.findViewById(R.id.item_image); TextView tvName = (TextView) itemView.findViewById(R.id.item_name); tvName.setText(names[i]); imageView.setImageResource(drawables[i]); } }
完整代码:http://download.csdn.net/detail/y472360651/9842376
相关文章推荐
- 【Android UI】SlidingTabLayout使用小结
- AndroidSupportDesign之TabLayout使用详解
- 使用Android Support Design 控件TabLayout 方便快捷实现选项卡功能
- Android Material Design(4) CoordinatorLayout,AppBarLayout,Toolbar以及TabLayout的使用
- Android使用TabLayout实现选项卡
- Eclipse下使用Android Design Support Library中的控件(比如TabLayout)
- Android SupportDesign 只TabLayout使用详解
- Android 在Fragment中使用TabLayout时标题不显示问题
- AndroidSupportDesign之TabLayout使用详解
- Android中TabLayout使用详解
- android 使用TabLayout出现的问题
- Android:Android Support Design之TabLayout使用详解
- Android Material Design:滑动指示选项卡android.support.design.widget.TabLayout的简单使用
- 使用android support library中的tablayout实现页签切换效果出现的问题
- Android:Android Support Design之TabLayout使用详解
- 【Android界面实现】使用ActionBar和DrawerLayout纯原生控件,实现侧滑栏和滑动Tab界面
- 使用Android Support Design 控件TabLayout 方便快捷实现选项卡功能
- Android TabLayout使用注意点。
- Android Tablayout使用示例及详解
- AndroidSupportDesign之TabLayout使用详解