我正在制作一个ViewPager来显示一系列图像,这些图像由它们在资源值数组中的位置来标识。这是适配器的instantiateItem
代码:
//indexes the images
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0.getTag().equals(arg1);
}
//serves the views
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView view = new ImageView(container.getContext());
view.setScaleType(ScaleType.FIT_CENTER);
view.setTag(position);
view.setImageResource(mImages.get(position));
container.addView(view, position);
return view;
}
不显示。查看container.getChildAt(0)
确认布局参数设置为MATCH_PARENT
但宽度和高度为0.容器自身的宽度和高度是屏幕尺寸(如预期的那样)。
将代码更改为
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView view = (ImageView) View.inflate(container.getContext(), R.layout.imageview, null);
view.setScaleType(ScaleType.FIT_CENTER);
view.setTag(position);
view.setImageResource(mImages.get(position));
container.addView(view, position);
return view;
}
(其中R.layout.imageview
只是一个ImageView
in的布局)不起作用。将背景颜色设置为任意可见值表示视图基本上不可见。发生了什么事?
答案 0 :(得分:0)
返回的对象不应该是View
,而是用于识别 View
的对象。在这种情况下,该位置被用作索引,因此返回值应为position:
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0.getTag().equals(arg1);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView view = new ImageView(container.getContext());
view.setScaleType(ScaleType.FIT_CENTER);
view.setTag(position);
view.setImageResource(mImages.get(position));
container.addView(view, position);
return position;
}