備忘録 〜プログラミング〜

プログラミングに関する事をつらつらと、、

ViewPagerを使用するときにwrap_contentを適応する方法

ViewPagerを使用しているとき、高さを画像に合わせようと思ったのですが、実際に使用してみると画像が小さくなってしまいます。
なので、高さを(120dp)などとして固定で使用していたのですが、やはりwrap_contentを使いたい。という事で調べてみたところ、
ViewPagerを継承したクラスを作成して、そのクラスを使用する事で可能という事が分かりました。
その継承クラスは、こちら。

public class MyViewPager extends ViewPager{
  public MyViewPager(Context context){
    super(context);
  }

  public MyViewPager(Context context, AttributeSet attrs){
    super(context, attrs);
  }

  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
    int height = 0;
    for(int i=0; i<getChildCount(); i++){
      View child = getChildAt(i);
      child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
      int h = child.getMeasuredHeight();
      if(h > height) height = h;
    }
    heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  }
}

これで、何とか成功しましたー。stackoverflow.com