我试图向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两次,但这似乎没有帮助。
我该如何解决这个问题?
答案 0 :(得分:0)
正如CommonsWare所指出的,这是appcompat-v4 23.0.1的一个错误。我设法通过返回支持appcompat-v7和appcompat-v4版本22.2.0来解决这个问题。
This answer重复的问题提供了另一种解决方案。