TabLayout+ViewPager 实现页签滑动的效果
2017-04-23 14:57
531 查看
在2015年的google大会上,google发布了新的
只要在build.gradle中加入compile 'com.android.support:design:22.2.0'即可。
fragment_find.xml
这里面没有什么特别的,就是添加了一个TabLayout和Viewpager作为上下的布局。其中
Find_tab_Adapter.Java
它是viewpager的Adapter,因为这里面我每个栏目下,都会有一些列表,所以采用list<View>的方式,在里面切换layout不太适合,所以我采用了List<Fragment>来直接加载多个fragment
FindFragment.java这个的说法,全在标注里面了
package com.example.cg.myzhihu;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.cg.myzhihu.Adapters.Find_tab_Adapter;
import java.util.ArrayList;
import java.util.List;
/**
* 发现页面
*/
public class FindFragment extends Fragment {
private TabLayout tab_FindFragment_title; //定义TabLayout
private ViewPager vp_FindFragment_pager; //定义viewPager
private FragmentPagerAdapter fAdapter; //定义adapter
private List<Fragment> list_fragment; //定义要装fragment的列表
private List<String> list_title; //tab名称列表
private Find_hotRecommendFragment hotRecommendFragment; //热门推荐fragment
private Find_hotCollectionFragment hotCollectionFragment; //热门收藏fragment
private Find_hotMonthFragment hotMonthFragment; //本月热榜fragment
private Find_hotToday hotToday; //今日热榜fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_find, container, false);
initControls(view);
return view;
}
/**
* 初始化各控件
* @param view
*/
private void initControls(View view) {
tab_FindFragment_title = (TabLayout)view.findViewById(R.id.tab_FindFragment_title);
vp_FindFragment_pager = (ViewPager)view.findViewById(R.id.vp_FindFragment_pager);
//初始化各fragment
hotRecommendFragment = new Find_hotRecommendFragment();
hotCollectionFragment = new Find_hotCollectionFragment();
hotMonthFragment = new Find_hotMonthFragment();
hotToday = new Find_hotToday();
//将fragment装进列表中
list_fragment = new ArrayList<>();
list_fragment.add(hotRecommendFragment);
list_fragment.add(hotCollectionFragment);
list_fragment.add(hotMonthFragment);
list_fragment.add(hotToday);
//将名称加载tab名字列表,正常情况下,我们应该在values/arrays.xml中进行定义然后调用
list_title = new ArrayList<>();
list_title.add("热门推荐");
list_title.add("热门收藏");
list_title.add("本月热榜");
list_title.add("今日热榜");
//设置TabLayout的模式
tab_FindFragment_title.setTabMode(TabLayout.MODE_FIXED);
//为TabLayout添加tab名称
tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(0)));
tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(1)));
tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(2)));
tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(3)));
fAdapter = new Find_tab_Adapter(getActivity().getSupportFragmentManager(),list_fragment,list_title);
//viewpager加载adapter
vp_FindFragment_pager.setAdapter(fAdapter);
//tab_FindFragment_title.setViewPager(vp_FindFragment_pager);
//TabLayout加载viewpager
tab_FindFragment_title.setupWithViewPager(vp_FindFragment_pager);
//tab_FindFragment_title.set
}
}
效果图,不太会做成动态的。
Android Support Design库,里面包含了几个新的控件,其中就有一个TabLayout,它就可以完成TabPageIndicator的效果,最好的是它可以兼容到2.2以上版本,包括2.2。下面我就举一个简单的例子来使用它。
只要在build.gradle中加入compile 'com.android.support:design:22.2.0'即可。
fragment_find.xml
这里面没有什么特别的,就是添加了一个TabLayout和Viewpager作为上下的布局。其中
Find_tab_Adapter.Java
它是viewpager的Adapter,因为这里面我每个栏目下,都会有一些列表,所以采用list<View>的方式,在里面切换layout不太适合,所以我采用了List<Fragment>来直接加载多个fragment
FindFragment.java这个的说法,全在标注里面了
package com.example.cg.myzhihu;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.cg.myzhihu.Adapters.Find_tab_Adapter;
import java.util.ArrayList;
import java.util.List;
/**
* 发现页面
*/
public class FindFragment extends Fragment {
private TabLayout tab_FindFragment_title; //定义TabLayout
private ViewPager vp_FindFragment_pager; //定义viewPager
private FragmentPagerAdapter fAdapter; //定义adapter
private List<Fragment> list_fragment; //定义要装fragment的列表
private List<String> list_title; //tab名称列表
private Find_hotRecommendFragment hotRecommendFragment; //热门推荐fragment
private Find_hotCollectionFragment hotCollectionFragment; //热门收藏fragment
private Find_hotMonthFragment hotMonthFragment; //本月热榜fragment
private Find_hotToday hotToday; //今日热榜fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_find, container, false);
initControls(view);
return view;
}
/**
* 初始化各控件
* @param view
*/
private void initControls(View view) {
tab_FindFragment_title = (TabLayout)view.findViewById(R.id.tab_FindFragment_title);
vp_FindFragment_pager = (ViewPager)view.findViewById(R.id.vp_FindFragment_pager);
//初始化各fragment
hotRecommendFragment = new Find_hotRecommendFragment();
hotCollectionFragment = new Find_hotCollectionFragment();
hotMonthFragment = new Find_hotMonthFragment();
hotToday = new Find_hotToday();
//将fragment装进列表中
list_fragment = new ArrayList<>();
list_fragment.add(hotRecommendFragment);
list_fragment.add(hotCollectionFragment);
list_fragment.add(hotMonthFragment);
list_fragment.add(hotToday);
//将名称加载tab名字列表,正常情况下,我们应该在values/arrays.xml中进行定义然后调用
list_title = new ArrayList<>();
list_title.add("热门推荐");
list_title.add("热门收藏");
list_title.add("本月热榜");
list_title.add("今日热榜");
//设置TabLayout的模式
tab_FindFragment_title.setTabMode(TabLayout.MODE_FIXED);
//为TabLayout添加tab名称
tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(0)));
tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(1)));
tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(2)));
tab_FindFragment_title.addTab(tab_FindFragment_title.newTab().setText(list_title.get(3)));
fAdapter = new Find_tab_Adapter(getActivity().getSupportFragmentManager(),list_fragment,list_title);
//viewpager加载adapter
vp_FindFragment_pager.setAdapter(fAdapter);
//tab_FindFragment_title.setViewPager(vp_FindFragment_pager);
//TabLayout加载viewpager
tab_FindFragment_title.setupWithViewPager(vp_FindFragment_pager);
//tab_FindFragment_title.set
}
}
效果图,不太会做成动态的。
相关文章推荐
- TabLayout+ViewPager实现选项卡动态滑动效果
- TabLayout+ViewPager+Fragment实现顶部滑动效果
- 安卓 TabLayout+ViewPager实现滑动Tab效果
- TabLayout 和ViewPager和Fragment的多页面滑动(主要实现一个水平的布局用来展示Tabs加上ViewPager实现联动效果)
- 三行代码实现 TabLayout+ViewPager 的 Tab 滑动效果,从封装到开源
- Android进阶之利用Tablayout+ViewPager+Fragment实现神奇的滑动效果
- TabLayout+TabItem+ViewPager+Fragment实现早期微信屏幕滑动效果
- android之TabLayout实现PagerSlidingTabStrip,ViewpagerIndicator之类的效果滑动页面导航效果(类似网易新闻)
- TabLayout+ViewPager+Fragment实现分页滑动效果
- 三行代码实现TabLayout+ViewPager的Tab滑动效果,从封装到开源
- 使用TabLayout和ViewPager实现左右滑动选项卡
- Material Design :原生TabLayout+viewpaper+fragment实现滑动效果
- Android 导航条效果实现(六) TabLayout+ViewPager+Fragment
- Android进阶UI之SlidingTabLayout实现ViewPager页卡滑动效果
- TabLayout+ViewPager实现滑动底部导航栏
- ViewPager+TabLayout(谷歌支持包)实现联动效果
- 【Android】viewpager+fragment+tablayout实现滑动菜单栏
- 使用TabLayout、ViewPager和Fragment实现顶部菜单可滑动切换
- android SlidingTabLayout实现ViewPager页卡滑动效果
- Android ViewPager和Fragment实现顶部导航界面滑动效果、标签下的tab位置