如何使ViewPager的正方形大小适合屏幕宽度?

时间:2014-07-10 10:49:12

标签: android android-viewpager

我有一个viewpager,我想占用手机屏幕的整个宽度,不过那么多。我想ViewPager的高度然后匹配宽度,所以整个事情是正方形,但无法弄清楚如何做到这一点。

我尝试过重量,固定高度,match_parent,wrap_content的组合,但似乎没有达到此目的

2 个答案:

答案 0 :(得分:2)

您可以使用Display获取屏幕尺寸(以像素为单位)。

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = width;

然后创建LayoutParams并将其设置为ViewPager.

LayoutParams lp = new LayoutParams(width,height);
mViewPager.setLayoutParams(lp);

您可能还想检查哪个值更小,宽度或高度。

改编自here

答案 1 :(得分:1)

这是与xml兼容的另一种方式,无需配置:

public class SquareViewPager extends ViewPager {

    public SquareViewPager(final Context context) {
        super(context);
    }

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

    @Override protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
        final int width = getDefaultSize(getSuggestedMinimumWidth(),widthMeasureSpec);
        setMeasuredDimension(width, width);
    }

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

然后:

<my.package.SquareViewPager
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>