Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使ViewPager的大小与屏幕宽度成正方形?_Android_Android Viewpager - Fatal编程技术网

Android 如何使ViewPager的大小与屏幕宽度成正方形?

Android 如何使ViewPager的大小与屏幕宽度成正方形?,android,android-viewpager,Android,Android Viewpager,我有一个可视寻呼机,我想占据整个手机屏幕的宽度,不管它有多大。我希望ViewPager的高度与宽度相匹配,这样整个东西都是方形的,但我不知道如何做到这一点 我尝试了重量、固定高度、匹配父项、包装内容的组合,但似乎没有达到这一效果,你可以用它来获得屏幕大小(像素) Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width =

我有一个可视寻呼机,我想占据整个手机屏幕的宽度,不管它有多大。我希望ViewPager的高度与宽度相匹配,这样整个东西都是方形的,但我不知道如何做到这一点

我尝试了重量、固定高度、匹配父项、包装内容的组合,但似乎没有达到这一效果,你可以用它来获得屏幕大小(像素)

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = width;
然后创建并将它们设置为您的

您可能还需要检查哪个值更小,宽度还是高度


改编自

这里是另一种与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"/>

所以这是实现这一目标的最佳实践方式?如果不手动设置高度,是否没有内置方法?
<my.package.SquareViewPager
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>