2012-10-05 43 views
0

我已經爲viewpager創建了頁面指示器。當用戶在viewpager中滑動時,我正在更改指示器圖像。ImageView的invalidate無法正常工作

下面是我使用onPageSelected#ViewPager.OnPageChangeListener代碼

public void onPageSelected(int position) { 
    int childCount = this.layout.getChildCount(); 
    for (int i = 0; i < childCount; i++) { 
     PageItem child = (PageItem) this.layout.getChildAt(position); 
     if (i == position) { 
      child.setActiveState(); 
     } else { 
      child.resetState(); 
     } 
    } 
    this.layout.invalidate(); 
} 

下面是我PageItem類

public class PageItem extends ImageView { 

private int activeBitmap; 
private int inActiveBitmap; 
private boolean isActive; 

public PageItem(Context context, AttributeSet attrs, int defStyle, 
     int activeBitmapId, int inActiveBitmapId) { 
    super(context, attrs, defStyle); 
    this.activeBitmap = activeBitmapId; 
    this.inActiveBitmap = inActiveBitmapId; 
    this.setImageResource(inActiveBitmap); 
    isActive = false; 
} 

public PageItem(Context context, AttributeSet attrs, int activeBitmapId, 
     int inActiveBitmapId) { 
    super(context, attrs); 
    this.activeBitmap = activeBitmapId; 
    this.inActiveBitmap = inActiveBitmapId; 
    this.setImageResource(inActiveBitmap); 
    isActive = false; 
} 

public PageItem(Context context, int activeBitmapId, int inActiveBitmapId) { 
    super(context); 
    this.activeBitmap = activeBitmapId; 
    this.inActiveBitmap = inActiveBitmapId; 
    this.setImageResource(inActiveBitmap); 
    isActive = false; 
} 

public void resetState() { 
    this.setImageDrawable(this.getContext().getResources() 
      .getDrawable(inActiveBitmap)); 
    this.invalidate(); 
    isActive = false; 
} 

public void setActiveState() { 
    this.setImageDrawable(this.getContext().getResources() 
      .getDrawable(activeBitmap)); 
    this.invalidate(); 
    isActive = true; 
} 

}

現在開始我的應用程序後,當我做刷卡第一次改變圖像,但之後它不會改變圖像。

在此先感謝。

+0

不forceLayout或requestLayout有什麼影響? – Niko

+0

沒有任何影響。 – yash

回答

0

看起來應該是:

PageItem child = (PageItem) this.layout.getChildAt(i); 
+0

Google提供了我所需要的android.support.v4.view.PagerTabStrip。 – yash