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

android.support.v4.view.PagerTitleStrip

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

效果:

fdf160f7731deb09b537ed546b6db38b.png

f4a44569b883549be7cdfb33d8e41754.png

xml使用:

android:id="@+id/pager"

android:layout_width="match_parent"

android:layout_height="match_parent">

android: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: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并设置。

原文:http://blog.csdn.net/jjwwmlp456/article/details/44595815

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值