ViewPage第二课为ViewPage加入标题

Posted liguangsunls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ViewPage第二课为ViewPage加入标题相关的知识,希望对你有一定的参考价值。

在第一课

学前准备:掌握ViewPage第一课http://blog.csdn.net/wei_chong_chong/article/details/50468832
为ViewPage加入标题:
PageTabStrip是PageTitleStrip的子类
PageTabStrip的使用与PageTitleStrip全然一样,
实现效果。pageTabStrip的标题文字带有Indicator。而且能够通过点击标题切换页面的显示。
使用直接把以下的第一步中的<android.support.v4.view.PagerTitleStrip换成android.support.v4.view.PagerTabStrip即可了

布局文件:

在<android.support.v4.view.ViewPager节点下加入子节点:


 

<android.support.v4.view.PagerTabStrip
            android:layout_width="fill_parent"
            android:layout_height="50dp" >
        </android.support.v4.view.PagerTabStrip>

详细例如以下:

 <android.support.v4.view.ViewPager
        android:id="@+id/vp_viewpage"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/rg_tab" >

        <android.support.v4.view.PagerTabStrip
            android:layout_width="fill_parent"
            android:layout_height="50dp" >
        </android.support.v4.view.PagerTabStrip>
    </android.support.v4.view.ViewPager>


第二步:MainActivity中加入

private List<String> titles;
并初始化
titles = new ArrayList<String>();
titles.add("page01");
titles.add("page02");
titles.add("page03");
titles.add("page04");
并在内部类中实现方法:




@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return titles.get(position);
}


详细例如以下:

public class MainActivity extends Activity {
	private ViewPager viewpager;
	private List<View> children;

	private List<String> titles;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		viewpager = (ViewPager) findViewById(R.id.vp_viewpage);
		children = new ArrayList<View>();
		children.add(LayoutInflater.from(this).inflate(R.layout.page01, null));
		children.add(getLayoutInflater().inflate(R.layout.page02, null));
		children.add(getLayoutInflater().inflate(R.layout.page03, null));
		children.add(getLayoutInflater().inflate(R.layout.page04, null));
		titles = new ArrayList<String>();
		titles.add("page01");
		titles.add("page02");
		titles.add("page03");
		titles.add("page04");
		viewpager.setAdapter(new InnerPagerAdapter());
	}
	public class InnerPagerAdapter extends PagerAdapter{
		@Override
		public CharSequence getPageTitle(int position) {
			// TODO Auto-generated method stub
			return titles.get(position);
		}

		@Override
		public int getCount() {
			//获取子级布局的数量

			return children.size();//返回viewpage容器中子级布局的个数,
		}

		@Override
		public boolean isViewFromObject(View view, Object object) {
			// 推断某个View对象是否为当前被加入到ViewPager容器中的对象
			return view == object;
		}

		//以下两个方法是PageAdapter中必须实现的非抽象方法
		@Override
		public Object instantiateItem(ViewGroup container, int position) {
			// 实例化ViewPager容器中指定的position位置须要显示的View对象
			View view = children.get(position);
			container.addView(view);


			return view;
		}

		@Override
		public void destroyItem(ViewGroup container, int position, Object object) {
			//在ViewPager中移除指定的position位置的View对象
			container.removeView(children.get(position));
		}
	}

}


以上是关于ViewPage第二课为ViewPage加入标题的主要内容,如果未能解决你的问题,请参考以下文章

安卓开发 viewpage加fragment加listview. 我想实现一个类似微信的界面。

Adnroid ViewPage 使用

ASP.NET MVC:让 ViewModel 进入 ViewPage 的部分视图

ViewPage实现一屏多页面显示(进阶版)

Android中Scrollview嵌套viewpage问题:viewpage设置非固定高点,按照自定义的scrollview 还是不能解决.

如何在 android 中设置 ViewPage 及其适配器?