2013-07-09 107 views
1

我正在使ViewPager顯示一系列圖像,這些圖像由它們在資源值數組中的位置標識。這裏是我的適配器instantiateItem代碼:爲什麼我的ViewPager的零寬度和高度的孩子?

//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佈局)沒有工作。將背景顏色設置爲任意可見值表明視圖基本上不可見。這是怎麼回事?

+0

。 –

回答

0

返回的對象不應該是View,而是用於的對象標識爲View。在這種情況下,位置被用作索引,所以返回值應該是位置:順便說一下,三星Galaxy S3在Jellybean上,位置:

@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; 
} 
相關問題