2011-10-23 11 views
0

私は私の周りを想像することができない面白い奇抜なことがあります。だから私はウィジェットの周りに私のレイアウトを包み込んだので、いくつかのイベントや他の便利なメソッドを追加することができました。しかし、ウィジェットのコンストラクタを使用して、私はViewPagerで子としてインスタンス化することができません。しかし、私がウィジェットラッパーを使わずにレイアウトを膨張させると、それは機能します。作品Android ViewPagerの子供は、膨張したレイアウトではなく複合ウィジェットを使用してインスタンス化されたときに表示されません

相続コード:

private View getNewTabView() { 
    View view = getLayoutInflater().inflate(
      R.layout.checkpoint_new_tab_view, null); 

    // XmlPullParser parser = getResources().getXml(
    // R.layout.checkpoint_new_tab_view); 
    // AttributeSet as = Xml.asAttributeSet(parser); 
    // NewCheckpointsTabVIew view = new NewCheckpointsTabVIew(this, as); 
    return view; 
} 

はここにHERESに私のViewPager

private class CheckpointPagerAdapter extends PagerAdapter { 

    @Override 
    public void destroyItem(View collection, int position, Object view) { 
     ((ViewPager) collection).removeView((ScrollView) view); 
    } 

    @Override 
    public void finishUpdate(View arg0) { 
    } 

    @Override 
    public int getCount() { 
     return 4; 
    } 

    @Override 
    public Object instantiateItem(View arg0, int arg1) { 
     View child = getNewTabView(); 
     ((ViewPager) arg0).addView(child, 0); 
     return child; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == object; 
    } 

    @Override 
    public void restoreState(Parcelable arg0, ClassLoader arg1) { 
    } 

    @Override 
    public Parcelable saveState() { 
     return null; 
    } 

    @Override 
    public void startUpdate(View arg0) { 
    } 

} 

し、ウィジェットのラッパーのための私のアダプタのコードです(動作しないものがコメントアウトされて)膨らんだレイアウトを包み込む:

public class NewCheckpointsTabVIew extends ScrollView { 

    Context context; 

    public NewCheckpointsTabVIew(Context context) { 
     super(context); 
     this.context = context; 
    } 

    public NewCheckpointsTabVIew(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.context = context; 
    } 

    private void init() { 
     // height + width 
     android.view.ViewGroup.LayoutParams params = getLayoutParams(); 
     params.height = android.view.ViewGroup.LayoutParams.FILL_PARENT; 
     params.width = android.view.ViewGroup.LayoutParams.FILL_PARENT; 
     setLayoutParams(params); 
    } 

    @Override 
    public void onFinishInflate() { 
     super.onFinishInflate(); 
     LayoutInflater layoutInflater = (LayoutInflater) getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     layoutInflater.inflate(R.layout.checkpoint_new_tab_view, this); 
    } 

    @Override 
    public void onSizeChanged(int w, int h, int oldw, int oldh) { 
     super.onSizeChanged(w, h, oldw, oldh); 
     init(); 
    } 

} 

なぜ誰が知っていますか?ありがとう!

答えて

0

解決した、私は間違ったイベントでそれを膨らませていた、それはコンストラクタで行う必要があります実現しました。正しいコードがあります。http://pastebin.com/hYDhXxdp

関連する問題