Android:Fragment+ViewPager实现Tab滑动
public class FragAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments ;
public FragAdapter(FragmentManager fm){
super(fm);
}
public FragAdapter(FragmentManager fm,List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
/**
* add the fragment to the special position
* @param location the position be added to.
* @param fragment
*/
public void addFragment(int location,Fragment fragment){
this.fragments.add(location, fragment);
this.notifyDataSetChanged();
}
/**
* add the fragment to the default position.the end of the list.
* @param fragment
*/
public void addFragment(Fragment fragment){
this.fragments.add(fragment);
this.notifyDataSetChanged();
}
}
MyFragment.java:
public class MyFragment extends Fragment {
private static final String TEXT_CHAT = "CHAT";
/**
* Factory method to generate a new instance of the fragment given a string .
*
* @param char 主页面要传过来的信息
* @return A new instance of MyFragment with chat extras
*/
public static MyFragment newInstance(String chat) {
final MyFragment f = new MyFragment();
final Bundle args = new Bundle();
args.putString(TEXT_CHAT, chat);
f.setArguments(args);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.myfragment, container, false);
TextView tv = (TextView) view.findViewById(R.id.tv_fragment_text);
String str = getArguments() != null ? getArguments().getString(TEXT_CHAT) : null;
if(str != null){
tv.setText(str);
}else{
tv.setText("获取字段出错了,求指导");
}
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
MainActivity.java:
public class MainActivity extends FragmentActivity implements OnClickListener {
private ViewPager vp;
private TextView tv_no1;
private TextView tv_no2;
private FragAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.vp_main);
tv_no1 = (TextView) findViewById(R.id.tv_no1);
tv_no2 = (TextView) findViewById(R.id.tv_no2);
tv_no1.setOnClickListener(this);
tv_no2.setOnClickListener(this);
initViewPage();
}
/**
* 初始化 view page的相关数据
*/
private void initViewPage() {
List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(MyFragment.newInstance("我是第一个界面,看到我,看到我"));
fragments.add(MyFragment.newInstance("我是第二个界面,看到我,看到我"));
adapter = new FragAdapter(getSupportFragmentManager(), fragments);
vp.setAdapter(adapter);
vp.setCurrentItem();
changeTextColor();
vp.setOnPageChangeListener(new MyVPageChangeListener());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
private class MyVPageChangeListener implements OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int location) {
changeTextColor(location);
}
}
/**
* 设置下面文本的颜色。
* @param location
*/
private void changeTextColor(int location) {
switch (location) {
case :
tv_no1.setTextColor(Color.RED);
tv_no2.setTextColor(Color.CYAN);
break;
case :
tv_no2.setTextColor(Color.RED);
tv_no1.setTextColor(Color.CYAN);
break;
default:
break;
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_no1:
vp.setCurrentItem();
break;
case R.id.tv_no2:
vp.setCurrentItem();
break;
default:
break;
}
}
}
FragAdapter.java:
Android:Fragment+ViewPager实现Tab滑动的更多相关文章
- Android之仿微信Tab滑动
这个项目实现了以下的功能:有三个标签聊天.发现和通讯录,左右滑动下面的ViewPager可以切换不同的标签,且标签下面的蓝色条可以随着手指的滑动来实时滑动.另外,如果第二次滑动到“聊天”界面,可以在“ ...
- 114、Android禁止ViewPager的左右滑动
有时候在开发中会遇到一些“诡异”的要求,比如在ViewPager中嵌入ListView,或者再嵌入一个ViewPager,那么在滑动的时候就会造成被嵌入的XXView不能滑动了,那么现在就把最外层的V ...
- Android listview viewpager解决冲突 滑动
Android listview viewpager滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决 在listview 上使用 addHeaderView 在第 ...
- Android禁止ViewPager的左右滑动
转载请注明出处:http://blog.csdn.net/allen315410/article/details/40744287 有时候在开发中会遇到一些"诡异"的要求,比方在V ...
- 011 Android TabLayout+ViewPager实现顶部滑动效果(多个页面)
1.TabLayout介绍 TabLayout提供了一个水平的布局用来展示Tabs,很多应用都有这样的设计,典型的有网易新闻,简书,知乎等.TabLayout就可以很好的完成这一职责,首先TabLay ...
- [Android]使用ViewPager实现图片滑动展示
在淘宝等电商的APP首页经常能看到大幅的广告位,通常有多幅经常更新的图片用于展示促销信息,如下图所示: 通常会自动滚动,也可以根据手势滑动.我没有研究过人家的APP是通过什么实现的,可能有第三方已经封 ...
- Android使用ViewFlipper实现左右滑动效果面
在我的博客中,上次是使用ViewPager实现左右滑动的效果的,请看文章:Android使用ViewPager实现左右滑动效果. 这次我来使用ViewFlipper实现这种效果,好了,先看看效果吧: ...
- ViewPager+Fragment再探:和TAB滑动条一起三者结合
Fragment前篇: <Android Fragment初探:静态Fragment组成Activity> ViewPager前篇: <Android ViewPager初探:让页面 ...
- Android典型界面设计——ViewPage+Fragment实现区域顶部tab滑动切换
一.问题描写叙述 本系列将结合案例应用,陆续向大家介绍一些Android典型界面的设计,首先说说tab导航,导航分为一层和两层(底部区块+区域内头部导航).主要实现方案有RadioGroup+View ...
随机推荐
- 【MySQL】MySQL中针对大数据量常用技术_创建索引+缓存配置+分库分表+子查询优化(转载)
原文地址:http://blog.csdn.net/zwan0518/article/details/11972853 目录(?)[-] 一查询优化 1创建索引 2缓存的配置 3slow_query_ ...
- 动易标签函数position() 应用
Position()返回当前正在被处理的节点的 index 位置.例子://book[position()<=3].结果:选择前三个 book 元素当然在动易标签中,我们不需要这样用,因为用sq ...
- C++例题练习(2)
环境:Dev-C++( Version:5.6.1) 1.循环输入一个1-1000的整数,判断是否为素数(输入1时程序结束) 素数:只能被1和自身整除. 实现代码: #include <iost ...
- ###Linux基础 - 1
点击查看Evernote原文. #@author: gr #@date: 2014-10-11 #@email: forgerui@gmail.com 前言 为什么学习Linux?:-) 酷Cool ...
- OC_NSString
// // main.m // OC_NSString // // Created by qianfeng on 15/6/10. // Copyright (c) 2015年 qianfeng. A ...
- C语言 宏/macor/#define/
C语言 宏/macor/#define 高级技巧 1.在进行调试的时候,需要进行打印/PRINT,可以通过define进行自定义.例如,自己最常用的DEBUG_PRINT() #define DEBU ...
- Wix: Show conditional message box
For example: Scenario: Show message box only during installation and MYPROPERTY has to be equal to & ...
- 九度OJ 1497 面积最大的全1子矩阵 -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1497 题目描述: 在一个M * N的矩阵中,所有的元素只有0和1,从这个矩阵中找出一个面积最大的全1子矩阵,所谓最 ...
- 【HeadFirst设计模式】8.模板方法模式
模板方法 定义: 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使用得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 策略模式: 定义一个算法家族,并让这些算法可以互 ...
- 解决jquery mobile的遇到高版本Chrome一直转圈,页面加载不出来的情况。
把这么一段代码,加到jquery.mobile.js中后问题解决了. $(document).on('mobileinit',function(){ $.mobile.changePage.defau ...