ViewPager实现选项卡切换,效果图如下:
步骤一:这里使用兼容低版本的v4包进行布局,这里eclipse没有输入提示,所以要手动输入,文件名称“activity_main.xml”
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 tools:context=".MainActivity" > 6 7 8 9 <android.support.v4.view.ViewPager 10 android:id="@+id/viewpager" 11 android:layout_height="wrap_content" 12 android:layout_width="wrap_content" 13 14 > 15 <android.support.v4.view.PagerTabStrip 16 android:id="@+id/tabstrip" 17 android:layout_height="wrap_content" 18 android:layout_width="wrap_content" 19 /> 20 21 </android.support.v4.view.ViewPager> 22 </RelativeLayout>
步骤二:选项卡中的内容都是从布局文件中获取,所以我新建两个测试布局“layout1.xml”和“layout2.xml”,里面内容随意。
步骤三:布局已经完成,在MainActivity.java类中,实现关键功能。
首先要声明ViewPager和PagerTabStrip对象,通过findViewById分别找到资源id,声明ArrayList<View>来存放测试布局文件,核心代码如下:
1 package com.example.viewpager; 2 3 import java.util.ArrayList; 4 5 import android.os.Bundle; 6 import android.app.Activity; 7 import android.graphics.Color; 8 import android.support.v4.view.PagerAdapter; 9 import android.support.v4.view.PagerTabStrip; 10 import android.support.v4.view.ViewPager; 11 import android.support.v4.view.ViewPager.OnPageChangeListener; 12 import android.view.Menu; 13 import android.view.View; 14 import android.view.ViewGroup; 15 import android.widget.Toast; 16 17 public class MainActivity extends Activity implements OnPageChangeListener { 18 19 private ViewPager viewpager; 20 private PagerTabStrip tabstrip; 21 private String[] title={"首页","新闻","公告","图片"}; 22 private ArrayList<View> views=new ArrayList<View>(); 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_main); 27 viewpager=(ViewPager) findViewById(R.id.viewpager); 28 tabstrip=(PagerTabStrip) findViewById(R.id.tabstrip); 29 initial(); 30 viewpager.setAdapter(new MyPagerAdapter()); 31 } 32 33 public void initial(){ 34 views.add(getLayoutInflater().inflate(R.layout.layout1,null)); 35 views.add(getLayoutInflater().inflate(R.layout.layout2,null)); 36 views.add(getLayoutInflater().inflate(R.layout.layout1,null)); 37 views.add(getLayoutInflater().inflate(R.layout.layout2,null)); 38 39 tabstrip.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_light)); 40 tabstrip.setTabIndicatorColor(getResources().getColor(android.R.color.holo_blue_bright)); 41 tabstrip.setTextColor(Color.WHITE); 42 viewpager.setOnPageChangeListener(this); 43 } 44 class MyPagerAdapter extends PagerAdapter{ 45 46 @Override 47 public int getCount() { 48 // TODO 自动生成的方法存根 49 return views.size(); 50 } 51 52 @Override 53 public Object instantiateItem(ViewGroup container, int position) { 54 View v=views.get(position); 55 container.addView(v); 56 return v; 57 } 58 59 @Override 60 public void destroyItem(ViewGroup container, int position, Object object) { 61 // TODO 自动生成的方法存根 62 //super.destroyItem(container, position, object); 63 container.removeView(views.get(position)); 64 } 65 @Override 66 public boolean isViewFromObject(View arg0, Object arg1) { 67 // TODO 自动生成的方法存根 68 return arg0==arg1; 69 } 70 @Override 71 public CharSequence getPageTitle(int position) { 72 // TODO 自动生成的方法存根 73 return title[position]; 74 } 75 76 } 77 @Override 78 public void onPageScrollStateChanged(int arg0) { 79 // TODO 自动生成的方法存根 80 81 } 82 83 @Override 84 public void onPageScrolled(int arg0, float arg1, int arg2) { 85 // TODO 自动生成的方法存根 86 87 } 88 89 @Override 90 public void onPageSelected(int arg0) { 91 // TODO 自动生成的方法存根 92 //Toast.makeText(MainActivity.this,"新年快乐",Toast.LENGTH_SHORT).show(); 93 } 94 95 }
年后继续更新,祝大家新年快乐。