PagerTabStrip与PagerTitleStrip,为ViewPager设置标题
证实ViewPager可以显示布局文件
PagerTitleStrip的使用:
MainActivity.java 方法的具体解释见:广告条的实现ViewPager,左右滑动,切换图片
import java.util.ArrayList; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.PagerTitleStrip; import android.support.v4.view.ViewPager; import android.view.View; import android.view.ViewGroup; /** 证实可以为ViewPager可以显示布局文件 */ public class MainActivity extends Activity { private ArrayList<View> list;//显示ViewPager的页面 private String[] title={"第一个","第二个","第三个"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewPager viewPager=(ViewPager) findViewById(R.id.viewPager); //ViewPager的标题 PagerTitleStrip pagertitle= (PagerTitleStrip) findViewById(R.id.pts_titlesd); //为标题设置tab的样式 pagertitle.setBackgroundColor(Color.BLUE); //为标题设置字体样式 pagertitle.setTextColor(Color.RED); list = new ArrayList<View>(); //将布局显示在ViewPager上 View view1 = View.inflate(this, R.layout.pager_01, null); View view2 = View.inflate(this, R.layout.pager_02, null); View view3 = View.inflate(this, R.layout.pager_03, null); list.add(view1); list.add(view2); list.add(view3); viewPager.setAdapter(new MyPagerAdapter()); } class MyPagerAdapter extends PagerAdapter{ @Override public int getCount() { return list.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { View view = list.get(position); container.addView(view); return view; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); object=null; } /** * 为ViewPager设置标题,与页面会一一对应 */ @Override public CharSequence getPageTitle(int position) { return title[position]; } } }
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <!-- PagerTitleStrip作为ViewPager页面的标题 --> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/viewPager"> <android.support.v4.view.PagerTitleStrip android:id="@+id/pts_titlesd" android:layout_width="match_parent" android:layout_height="wrap_content" > </android.support.v4.view.PagerTitleStrip> </android.support.v4.view.ViewPager> </LinearLayout>
pager_01.xml pager_02 03都为这样的布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#ffcccc" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="pager01" android:textSize="30sp"/> </LinearLayout>
效果如下:
PagerTabStrip的使用:比上面那个标题多了一个下划线
import java.util.ArrayList; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.PagerTabStrip; import android.support.v4.view.ViewPager; import android.view.View; import android.view.ViewGroup; public class MainActivity extends Activity { private ArrayList<View> list;//显示ViewPager的页面 private String[] title={"第一个","第二个","第三个"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewPager viewPager=(ViewPager) findViewById(R.id.viewPager); //ViewPager的标题 PagerTabStrip pagertable= (PagerTabStrip) findViewById(R.id.pts_titlesd); //为标题设置tab的样式 pagertable.setBackgroundColor(Color.BLUE); //为标题设置字体样式 pagertable.setTextColor(Color.RED); //设置线条样式,标题下滑线的颜色 pagertable.setTabIndicatorColor(Color.YELLOW); list = new ArrayList<View>(); //将布局显示在ViewPager上 View view1 = View.inflate(this, R.layout.pager_01, null); View view2 = View.inflate(this, R.layout.pager_02, null); View view3 = View.inflate(this, R.layout.pager_03, null); list.add(view1); list.add(view2); list.add(view3); viewPager.setAdapter(new MyPagerAdapter()); } class MyPagerAdapter extends PagerAdapter{ @Override public int getCount() { return list.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { View view = list.get(position); container.addView(view); return view; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); object=null; } /** * 为ViewPager设置标题,与页面会一一对应 */ @Override public CharSequence getPageTitle(int position) { return title[position]; } } }
activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.ViewPager android:id="@+id/vp_pagers" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.TitleStrip android:id="@+id/pts_titles" android:layout_width="match_parent" android:layout_height="wrap_content" > </android.support.v4.view.TitleStrip> </android.support.v4.view.ViewPager> </RelativeLayout>
ViewPager的页面布局文件和第一个一样
效果图: