我有自定义FragmentPagerAdapter和自定义ViewPager。
加载Activity时,前两个视图也会被加载。这些视图包含一个ImageView,其上绘制了一些自定义标签:
@Override
protected void onDraw(Canvas canvas) {
Logger.d(iDomsAndroidApp.TAG, "On draw");
drawLabels();
super.onDraw(canvas);
}
但是,当转到下一页并加载第3页时,从不调用ImageView的onDraw,也不会绘制图像和标签。
(通过滑动或专门致电:
public void moveNext() {
mPager.setCurrentItem(mPager.getCurrentItem() + 1);
}
)
在视图出现时是否需要有一个调用绘图的过程?
这是Android 6.0.1(API 23)的问题,但Android 5没有。任何人都可以帮我调试在初始加载后加载额外页面时没有调用draw()的原因。我现在花了几个小时,无法弄清楚Android 5和6之间的区别。
注意:它只发生在自定义ImageView上,因为所有其他UI元素(如小型WebView)似乎都没问题。
编辑: 视图会重新绘制,例如更改设备的方向,因此它似乎只是在初始创建或显示。
EDIT2: 我也尝试实现FragmentStatePagerAdapter,并调用mAdapter.notifyDataSetChanged();触发视图的重新创建:
public int getItemPosition(Object item) {
return POSITION_NONE;
}
现在,所有后续视图(包括第二个视图)都没有填充ImageView。所以当片段重新绘制时似乎出现了问题,