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。

@Overridepublic 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并设置。


更多相关文章

  1. Android轻量级存储源码分析
  2. Android 网络框架 Retrofit 源码解析
  3. Android 反编译apk 到java源码的方法
  4. Android属性动画AnimatorSet源码简单分析
  5. Android内存泄露专题——leakCanary源码分析
  6. Android ThreadLocal 源码分析

随机推荐

  1. android-edittext
  2. Android(安卓)uiautomator实例使用
  3. Android(安卓)Material design 之 Bottom
  4. 传智播客Android视频教程——第二天
  5. android 基础学习(6)-----sqlite3查看表
  6. 问题小结(11)-dialog的半透明背景的灰度
  7. android 4.0以上无法收到开机广播
  8. J2ME to android之学习笔记
  9. Android(安卓)!No Launcher activity foun
  10. Android原生项目集成React Native踩坑记