ViewPager和Tabhost结合,可滑动的tabhost
- public class ViewPagerActivity extends Activity {
- List<View> listViews;
- Context context = null;
- LocalActivityManager manager = null;
- TabHost tabHost = null;
- private ViewPager pager = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.viewpager);
- context = ViewPagerActivity.this;
- pager = (ViewPager) findViewById(R.id.viewpager);
- //定放一个放view的list,用于存放viewPager用到的view
- listViews = new ArrayList<View>();
- manager = new LocalActivityManager(this, true);
- manager.dispatchCreate(savedInstanceState);
- Intent i1 = new Intent(context, T1Activity.class);
- listViews.add(getView("A", i1));
- Intent i2 = new Intent(context, T2Activity.class);
- listViews.add(getView("B", i2));
- Intent i3 = new Intent(context, T3Activity.class);
- listViews.add(getView("C", i3));
- tabHost = (TabHost) findViewById(R.id.tabhost);
- tabHost.setup();
- tabHost.setup(manager);
- //这儿主要是自定义一下tabhost中的tab的样式
- RelativeLayout tabIndicator1 = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.tabwidget, null);
- TextView tvTab1 = (TextView)tabIndicator1.findViewById(R.id.tv_title);
- tvTab1.setText("第一页");
- RelativeLayout tabIndicator2 = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.tabwidget,null);
- TextView tvTab2 = (TextView)tabIndicator2.findViewById(R.id.tv_title);
- tvTab2.setText("第二页");
- RelativeLayout tabIndicator3 = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.tabwidget,null);
- TextView tvTab3 = (TextView)tabIndicator3.findViewById(R.id.tv_title);
- tvTab3.setText("第三页");
- Intent intent = new Intent(context,EmptyActivity.class);
- //注意这儿Intent中的activity不能是自身,所以我弄了个空的acitivity
- tabHost.addTab(tabHost.newTabSpec("A").setIndicator(tabIndicator1).setContent(intent));
- tabHost.addTab(tabHost.newTabSpec("B").setIndicator(tabIndicator2).setContent(intent));
- tabHost.addTab(tabHost.newTabSpec("C").setIndicator(tabIndicator3).setContent(intent));
- pager .setAdapter(new MyPageAdapter(listViews));
- pager .setOnPageChangeListener(new OnPageChangeListener() {
- @Override
- public void onPageSelected(int position) {
- //当viewPager发生改变时,同时改变tabhost上面的currentTab
- tabHost.setCurrentTab(position);
- }
- @Override
- public void onPageScrolled(int arg0, float arg1, int arg2) {
- }
- @Override
- public void onPageScrollStateChanged(int arg0) {
- }
- });
- //点击tabhost中的tab时,要切换下面的viewPager
- tabHost.setOnTabChangedListener(new OnTabChangeListener() {
- @Override
- public void onTabChanged(String tabId) {
- if ("A".equals(tabId)) {
- pager.setCurrentItem(0);
- }
- if ("B".equals(tabId)) {
- pager.setCurrentItem(1);
- }
- if ("C".equals(tabId)) {
- pager.setCurrentItem(2);
- }
- }
- });
- }
- private View getView(String id, Intent intent) {
- return manager.startActivity(id, intent).getDecorView();
- }
- private class MyPageAdapter extends PagerAdapter {
- private List<View> list;
- private MyPageAdapter(List<View> list) {
- this.list = list;
- }
- @Override
- public void destroyItem(View view, int position, Object arg2) {
- ViewPager pViewPager = ((ViewPager) view);
- pViewPager.removeView(list.get(position));
- }
- @Override
- public void finishUpdate(View arg0) {
- }
- @Override
- public int getCount() {
- return list.size();
- }
- @Override
- public Object instantiateItem(View view, int position) {
- ViewPager pViewPager = ((ViewPager) view);
- pViewPager.addView(list.get(position));
- return list.get(position);
- }
- @Override
- public boolean isViewFromObject(View arg0, Object arg1) {
- return arg0 == arg1;
- }
- @Override
- public void restoreState(Parcelable arg0, ClassLoader arg1) {
- }
- @Override
- public Parcelable saveState() {
- return null;
- }
- @Override
- public void startUpdate(View arg0) {
- }
- }
- }
ViewPager和Tabhost结合,可滑动的tabhost的更多相关文章
- ViewPagerIndicator 取代TabHost,实现滑动tab,引导页等效果
https://github.com/eltld/ViewPagerIndicator 取代TabHost,实现滑动tab,引导页等效果
- Android ViewPager再探:增加滑动指示条
上一篇:<Android ViewPager初探:让页面滑动起来> ViewPager只是左右滑动有些丑,也不知道当前位于第几页面. 可以在上方加入滑动指示条,来确定当前位置. 只需要修改 ...
- Android ViewPager初探:让页面滑动起来
下一篇:<Android ViewPager再探:增加滑动指示条> ViewPager需要用到适配器PagerAAdapter,以下四个函数需要重写: instantiateItem(Vi ...
- viewpager在最后一页滑动之后,跳转到主页面
[TOC] viewpager在最后一页滑动之后,跳转到主页面 思路 主要有是两个监听, 一是addOnPageChangeListener();二是setOnTouchListener(): add ...
- 【解决ViewPager在大屏上滑动不流畅】 设置ViewPager滑动翻页距离
在项目中做了一个ViewPager+Fragment滑动翻页的效果,在模拟器和小米手机上测试也比较正常.但是换到4.7以上屏幕测试的时候发现老是滑动失效. 因为系统默认的滑动策略是当用户滑动超过半屏之 ...
- 又折腾到这么晚 , 图片Viewpager PagerIndicator,listview 和侧边栏滑动的事件处理
代码 思路 根据坐标判断 事件是否拦截 调用 getParent().requestDisallowInterceptTouchEvent(true);方法告诉上层ViewGroup 是否拦截 返回t ...
- viewpager双层嵌套,子viewpager无限循环无法手动滑动
项目中首页是用viewpager+fragment集成的,第一个fragment有广告轮播图使用viewpager实现的,开始就遇到是广告图无法手动滑动,事件被外层的viewpager拦截响应切换到下 ...
- ViewPager结合Fragment进行无限滑动
实现ViewPager结合Fragment实现无限循环切换,这里也是在适配器里面进行的,当然使用滑动监听也能够实现 import android.support.v4.app.Fragment; im ...
- viewpager 无网络的时候滑动异常
不知道大家有没有遇到过这种情况,就是框架是viewpager+fragment的架构.然后呢,fragment里面是webview.一般情况下,当没有网的时候,webviwe会说什么找不到网页,然后很 ...
随机推荐
- 修改shell 将当前shell(默认是bash B SHELL )改为csh C SHELL
在修改当前shell时,用命令: usermod -s /bin/csh home home 为 你所想要改变的用户地址 此处home 为家目录,一般自己创建的用户都会在家目录 ...
- Linux系统日志及日志分析
Linux系统日志及日志分析 Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息. 大部分Linux发行版默认的日志守护进程为 syslog,位 ...
- linux的设置ip连接crt,修改主机名,映射,建文件
1.修改IP(或者vim vi /etc/sysconfig/network-scripts/ifcfg-eth0) 2.连接 crt 3.修改主机名 用vim 编辑 /etc/sysconfig/n ...
- lnmp一键安装包删除添加的域名
lnmp一键安装包删除添加的域名 如果使用lnmp一键安装包/root/vhost.sh 添加的域名可以,可以删除/usr/local/nginx/conf/vhost/要删除的域名.conf 文件, ...
- 三个css3趣玩小试
http://jsbin.com/semeh/8 请使用chrome打开 1.类似于网易新闻客户端的loading效果,左边的圆圈 2.发散式心跳效果,右边的圆圈 3.youtub上,搜索进度条效果, ...
- 忘记mysql root用户密码
今天帮一个售后的同事解决网盘无登录的问题,看了下后台日志,报错用密码root连接不上数据库,然后我就强行改了一下数据库密码,就OK了. (1)用root登录系统. (2)vim /etc/my.cnf ...
- Linux下使用Speedtest测试网速
导读 Speedtest是用来测试网络性能的开源软件,在Linux下面安装Speedtest可以用来测试网络出口的上传和下载速度,帮助排查网络方面导致的故障. Speedtest介绍 由于公司几个项目 ...
- Mac SVN <CornerStone>的安装和配置
cornerstone需要注意的地方 cornerstone文件夹的删除必须在 cornerstone软件里面删, 否则commit就会显示 up of date, 同步不了 http://www.t ...
- 服务器部署之 cap deploy:setup
文章是从我的个人博客上粘贴过来的, 大家也可以访问 www.iwangzheng.com $ cap deploy:setup 执行到这一步的时候会时间较长,可以直接中断 * executing &q ...
- win7+ubuntu双系统中卸载ubuntu方法
双系统中,如果要卸载ubuntu是不能够直接卸载的,需要使用一些特殊的方法.下面就为大家详细的介绍介绍. Step1 MBR引导区修复: 进入win7,下载个软件MbrFix,放在C:\windows ...