ViewPager+FragmentPagerAdapter+TabPageIndicator实现Tab效果(推荐)
来源:互联网 发布:大数据主要来源于 编辑:程序博客网 时间:2024/05/16 05:48
编写布局文件代码:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.pagerindicator_tab.MainActivity" > <com.viewpagerindicator.TabPageIndicator android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tabPageIndicator" android:background="@color/colorAccent"/> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/viewPager"/></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello" android:id="@+id/tv" android:textSize="25sp"/></LinearLayout><
编写TabFragment继承fragment,用来显示页面数据:
public class TabFragment extends Fragment{ private int pos; @SuppressLint("ValidFragment") public TabFragment(int pos){ this.pos = pos; } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag,container,false); TextView tv = (TextView) view.findViewById(R.id.tv); tv.setText(TabAdapter.TITLES[pos]); return view; }}ViewPager与FragmentPagerAdapter的配合去装载页面,可自定义一个TabAdapter继承FragmentPagerAdapter
public class TabAdapter extends FragmentPagerAdapter{ public static String TITLES[] = {"新朋友","群聊","公众号","商城"}; public TabAdapter(FragmentManager fm) { super(fm); }// viewPager填充的每个fragment页面, @Override public Fragment getItem(int position) { TabFragment fragment = new TabFragment(position); return fragment; }// Tab的数目 @Override public int getCount() { return TITLES.length; }// 填充Tab的标题 @Override public CharSequence getPageTitle(int position) { return TITLES[position]; }}
编写MainActivity代码:
public class MainActivity extends FragmentActivity { private TabAdapter tabAdapter; private ViewPager viewPager; private TabPageIndicator tabPageIndicator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tabAdapter = new TabAdapter(getSupportFragmentManager()); initViews(); viewPager.setAdapter(tabAdapter); tabPageIndicator.setViewPager(viewPager,0); } private void initViews(){ viewPager = (ViewPager) findViewById(R.id.viewPager); tabPageIndicator = (TabPageIndicator) findViewById(R.id.tabPageIndicator); }}使用viewPager.setAdapter(fragmentPagerAdapter)填充ViewPager,tabPageIndicator.setViewPager(viewPager)使TabPageIndicator实现对viewPager的适配
关于TabPageIndicator的样式可以在style.xml中进行配置,如下:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <!--设置TabPageIndicator样式为MyTabPageIndicator--> <item name="vpiTabPageIndicatorStyle">@style/MyTabPageIndicator</item> <item name="android:windowNoTitle">true</item> </style> <style name="MyTabPageIndicator" parent="Widget"> <item name="android:background">@drawable/vpi__tab_indicator</item> <<span style="font-family: Arial, Helvetica, sans-serif;">!--设置TabPageIndicator的背景样式--></span> <item name="android:textSize">20sp</item> <!--设置TabPageIndicator中文字的大小--> </style>对TabPageIndicator还有很多样式可以改变,这里不多讲
实现的效果如下:
注:com.viewpagerindicator.TabPageIndicator需要导入相关包,在Android Studio中导入这个包,可以参见我的博客介绍:http://blog.csdn.net/csdn_blog_lcl/article/details/52744101
1 0
- ViewPager+FragmentPagerAdapter+TabPageIndicator实现Tab效果(推荐)
- FragmentPagerAdapter+ViewPager实现Tab切换效果
- ActionBar+TabPageIndicator+ViewPager+FragmentPagerAdapter的Tab主界面
- ActionBar+TabPageIndicator+ViewPager+FragmentPagerAdapter的Tab主界面
- ViewPager与FragmentPagerAdapter实现Tab
- TabPageIndicator + ViewPager + FragmentPagerAdapter + Fragment分析APP主框架实现
- Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)
- Android实战简易教程<三十四>(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)
- ViewPager + FragmentPagerAdapter 实现底Tab的预加载问题。
- Android Tab大总结 Fragment+TabPageIndicator+ViewPager
- 多种多样的App主界面Tab实现方法——利用ViewPager+FragmentPagerAdapter实现Tab
- Viewpager + Fragment +FragmentPagerAdapter实现定时循环滚动效果
- Tab---Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
- ViewPager实现简单Tab切换效果
- 利用ViewPager实现仿微信Tab效果
- ViewPager与PagerAdapter配合实现Tab效果
- [Android] Android项目Tab类型主界面Fragment+TabPageIndicator+ViewPager
- android的ViewPager+FragmentPagerAdapter实现
- HTML中使用cookie保存登录账户
- Android Studio 主题插件
- 继续继续
- C中关于const的总结
- java面试之位异或运算符和switch特点
- ViewPager+FragmentPagerAdapter+TabPageIndicator实现Tab效果(推荐)
- 汇编语言(Assembly Language)——面向机器的程序设计语言
- LeetCode[208] Implement Trie (Prefix Tree)
- Toast的用法大全
- c语言练习
- 单源最短路径(Dijkstra)(C++)
- centOS7手动安装lnmp环境问题总结
- spring基础知识总结----AOP代理模式的实现
- Python的from import 和 import 的区别