免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1831 | 回复: 2
打印 上一主题 下一主题

[Android] Android设备TAB切换(可滑动切换) [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-07-07 22:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-06 14:28 |只看该作者 |倒序浏览
Android设备上的TAB切换,在之前的博客上已经做的点总结,
这里主要介绍下功能相对复杂的可滑动的TAB切换(Viewpager+Fragment实现);
废话不多说了上代码:

顺便把Tabhost和RadioGroup这两种实现方式也上传;
这是PageAdapter的内容
  1. package com.example.demotab;

  2. import java.util.List;

  3. import android.support.v4.app.Fragment;
  4. import android.support.v4.app.FragmentManager;
  5. import android.support.v4.app.FragmentPagerAdapter;

  6. public class MainPageAdapter extends FragmentPagerAdapter {

  7.     private List<Fragment> fragments;

  8.     public MainPageAdapter(FragmentManager fm) {
  9.         super(fm);
  10.         // TODO Auto-generated constructor stub
  11.     }

  12.     public MainPageAdapter(FragmentManager fm, List<Fragment> fragments) {
  13.         super(fm);
  14.         // TODO Auto-generated constructor stub
  15.         this.fragments = fragments;
  16.     }

  17.     @Override
  18.     public Fragment getItem(int arg0) {
  19.         // TODO Auto-generated method stub
  20.         return fragments.get(arg0);
  21.     }

  22.     @Override
  23.     public int getCount() {
  24.         // TODO Auto-generated method stub
  25.         return fragments.size();
  26.     }

  27. }
复制代码
在Activity中适配
  1. package com.example.demotab;

  2. import java.util.ArrayList;
  3. import java.util.List;

  4. import android.os.Bundle;
  5. import android.app.Activity;
  6. import android.support.v4.app.Fragment;
  7. import android.support.v4.app.FragmentActivity;
  8. import android.support.v4.view.ViewPager;
  9. import android.support.v4.view.ViewPager.OnPageChangeListener;
  10. import android.util.Log;
  11. import android.widget.RadioButton;
  12. import android.widget.RadioGroup;
  13. import android.widget.RadioGroup.OnCheckedChangeListener;

  14. public class MainActivity extends FragmentActivity implements
  15.         OnPageChangeListener, OnCheckedChangeListener {

  16.     private ViewPager pager;
  17.     private MainPageAdapter adapter;
  18.     private List<Fragment> fragments;
  19.     private RadioGroup group;
  20.     private RadioButton button0, button1, button2;

  21.     @Override
  22.     protected void onCreate(Bundle savedInstanceState) {
  23.         super.onCreate(savedInstanceState);
  24.         setContentView(R.layout.activity_main);

  25.         fragments = new ArrayList<Fragment>();
  26.         fragments.add(new Fragment_A());
  27.         fragments.add(new Fragment_B());
  28.         fragments.add(new Fragment_C());

  29.         pager = (ViewPager) findViewById(R.id.pager);
  30.         adapter = new MainPageAdapter(getSupportFragmentManager(), fragments);
  31.         pager.setAdapter(adapter);
  32.         pager.setOffscreenPageLimit(fragments.size() - 1);// 缓存页面,显示第一个缓存最后一个
  33.         pager.setOnPageChangeListener(this);

  34.         group = (RadioGroup) findViewById(R.id.radioGroup1);
  35.         button0 = (RadioButton) findViewById(R.id.radio0);
  36.         button1 = (RadioButton) findViewById(R.id.radio1);
  37.         button2 = (RadioButton) findViewById(R.id.radio2);
  38.         group.setOnCheckedChangeListener(this);
  39.     }

  40.     @Override
  41.     public void onPageScrollStateChanged(int arg0) {
  42.         // TODO Auto-generated method stub
  43.         Log.v("asdf", "onPageScrollStateChanged");
  44.     }

  45.     @Override
  46.     public void onPageScrolled(int arg0, float arg1, int arg2) {
  47.         // TODO Auto-generated method stub
  48.         // Log.v("asdf", "onPageScrolled");
  49.     }

  50.     @Override
  51.     public void onPageSelected(int arg0) {
  52.         // TODO Auto-generated method stub
  53.         Log.v("asdf", "onPageSelected");
  54.         getTabState(arg0);

  55.     }

  56.     @Override
  57.     public void onCheckedChanged(RadioGroup group, int checkedId) {
  58.         // TODO Auto-generated method stub
  59.         switch (checkedId) {
  60.         case R.id.radio0:
  61.             pager.setCurrentItem(0);
  62.             break;
  63.         case R.id.radio1:
  64.             pager.setCurrentItem(1);
  65.             break;
  66.         case R.id.radio2:
  67.             pager.setCurrentItem(2);
  68.             break;
  69.         default:
  70.             break;
  71.         }
  72.     }

  73.     private void getTabState(int index) {
  74.         // TODO Auto-generated method stub
  75.         button0.setChecked(false);
  76.         button1.setChecked(false);
  77.         button2.setChecked(false);

  78.         switch (index) {
  79.         case 0:
  80.             button0.setChecked(true);
  81.             break;
  82.         case 1:
  83.             button1.setChecked(true);
  84.             break;
  85.         case 2:
  86.             button2.setChecked(true);
  87.             break;
  88.         default:
  89.             break;
  90.         }

  91.     }

  92. }
复制代码

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2015-07-11 20:56 |只看该作者
现在TAB用得比较少了吧。

论坛徽章:
80
20周年集字徽章-庆
日期:2020-10-28 14:09:1215-16赛季CBA联赛之北京
日期:2020-10-28 13:32:5315-16赛季CBA联赛之北控
日期:2020-10-28 13:32:4815-16赛季CBA联赛之天津
日期:2020-10-28 13:13:35黑曼巴
日期:2020-10-28 12:29:1520周年集字徽章-周	
日期:2020-10-31 15:10:0720周年集字徽章-20	
日期:2020-10-31 15:10:07ChinaUnix元老
日期:2015-09-29 11:56:3020周年集字徽章-年
日期:2020-10-28 14:14:56
3 [报告]
发表于 2015-07-14 10:16 |只看该作者
我们的项目还在使用这个的,楼上的主要使用什么来实现tab的功能呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP