PagerTitlestrip并没有绘制第一个标题

时间:2015-09-14 15:00:38

标签: android

我试图向ViewPager添加两个装饰。一个是PageIndicator,是我制作的自定义装饰,另一个是标准的PagerTitleStrip。

在XML中添加这些作为ViewPager的孩子并没有做任何事情,至少PageIndicator的构造函数甚至没有被调用。所以,我目前正在使用这段代码:

mPageIndicator = new PageIndicator(this);
PagerTitleStrip strip=new PagerTitleStrip(this);

float d=getResources().getDisplayMetrics().density;

ViewPager.LayoutParams params = new ViewPager.LayoutParams();
params.isDecor = true;
params.gravity = Gravity.BOTTOM;
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
mPageIndicator.setLayoutParams(params);

ViewPager.LayoutParams params2=new ViewPager.LayoutParams();
params2.isDecor = true;
params2.gravity = Gravity.BOTTOM;
params2.height= (int) (20*d);
strip.setLayoutParams(params2);

mViewPager.addView(strip);
mViewPager.addView(mPageIndicator);

这在我的活动onStart期间执行,因为我显示具有相同活动的启动画面并在onStart中调用setContentView。

这使得两个装饰在视图的底部可见,但标题条在刷一次视图之前不显示任何文本,而向后滑动则显示第一页标题。只要调用mViewPager的setAdapter,就会重复此行为。我已经尝试在设置适配器时调用setCurrentItem两次,但这似乎没有帮助。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

正如CommonsWare所指出的,这是appcompat-v4 23.0.1的一个错误。我设法通过返回支持appcompat-v7和appcompat-v4版本22.2.0来解决这个问题。

This answer重复的问题提供了另一种解决方案。