Android(安卓)v4包下的PagerTitleStrip,ViewPager的页面标题
16lz
2021-01-24
android.support.v4.view.PagerTitleStrip
将Page的Title分离出来的一个自定义View,这样可以灵活的设置title的样式、文本。
效果:
xml使用:
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/pager"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v4.view.PagerTitleStripandroid:id="@+id/pager_title_strip"android:layout_width="match_parent"android:layout_height="30dp"android:layout_gravity="bottom"android:paddingTop="4dp"android:paddingBottom="4dp" /></android.support.v4.view.ViewPager>
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并设置。
更多相关文章
- Android(安卓)4.0.1 源码下载,模拟器编译和运行
- Android(安卓)性能优化(二)Handler运行机制原理,源码分析
- 成品app直播源码,Android自屏幕底部滑出更多面板的实现
- android通过更改hosts免优酷广告方法
- Android之Weight属性源码解析
- Android(安卓)音视频深入 四 Android原生API录视频MP4,有缺陷,没有
- Android(安卓)应用保存状态
- android避免service被杀 博客分类: android 1.在service中重写下
- android热修复--阿里热修复使用和源码分析