【发布时间】:2014-07-10 10:49:11
【问题描述】:
我有一个viewpager,我想占据手机屏幕的整个宽度,不管那是多少。我希望 ViewPager 的高度与宽度匹配,所以整个东西是方形的,但不知道如何做到这一点。
我尝试了重量、固定高度、match_parent、wrap_content 的组合,但似乎没有任何效果
【问题讨论】:
我有一个viewpager,我想占据手机屏幕的整个宽度,不管那是多少。我希望 ViewPager 的高度与宽度匹配,所以整个东西是方形的,但不知道如何做到这一点。
我尝试了重量、固定高度、match_parent、wrap_content 的组合,但似乎没有任何效果
【问题讨论】:
您可以使用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
【讨论】:
这是另一种兼容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"/>
【讨论】: