Android v4包下的PagerTitleStrip,ViewPager的页面标题

android.support.v4.view.PagerTitleStrip

将Page的Title分离出来的一个自定义View,这样可以灵活的设置title的样式、文本。


效果:

Android v4包下的PagerTitleStrip,ViewPager的页面标题_第1张图片Android v4包下的PagerTitleStrip,ViewPager的页面标题_第2张图片


xml使用:



	

  android:layout_gravity 控制标题的位置  一般取值为 bottom或top


看到开源项目ImageLoader中使用了这个,找了半天没看到哪里findbyid的,

原来在它的源码里就把它想成是ViewPager的子控件了。

部份源码:

 @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();

        final ViewParent parent = getParent();
        if (!(parent instanceof ViewPager)) {
            throw new IllegalStateException(
                    "PagerTitleStrip must be a direct child of a ViewPager.");
        }

        final ViewPager pager = (ViewPager) parent;
        final PagerAdapter adapter = pager.getAdapter();

        pager.setInternalPageChangeListener(mPageListener);
        pager.setOnAdapterChangeListener(mPageListener);
        mPager = pager;
        updateAdapter(mWatchingAdapter != null ? mWatchingAdapter.get() : null, adapter);
    }

  分析:在onAttachedToWindow()时,直接找出parent-view,如果是ViewPager才能使用,否则直接抛出异常。


设置title值

PagerAdapter 里有一个getPageTitle(),需要重写它,然后可以根据不同的page返回不同的title。

@Override
public CharSequence getPageTitle(int position) {
	switch (position) {
		case 0:
			return getString(R.string.title_list);
		case 1:
			return getString(R.string.title_grid);
		default:
	return null;
	}
}

  而在PageTitleStrip的updateText()源码里,调用了viewPager的adapter.getPageTitle,拿到title并设置。


你可能感兴趣的:(Android,Android,Support,V4)