我有一个viewpager,我想占用手机屏幕的整个宽度,不过那么多。我想ViewPager的高度然后匹配宽度,所以整个事情是正方形,但无法弄清楚如何做到这一点。
我尝试过重量,固定高度,match_parent,wrap_content的组合,但似乎没有达到此目的
答案 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"/>