【问题标题】:How to make ViewPager square sized to screen width?如何使 ViewPager 的正方形大小适合屏幕宽度?
【发布时间】:2014-07-10 10:49:11
【问题描述】:

我有一个viewpager,我想占据手机屏幕的整个宽度,不管那是多少。我希望 ViewPager 的高度与宽度匹配,所以整个东西是方形的,但不知道如何做到这一点。

我尝试了重量、固定高度、match_parent、wrap_content 的组合,但似乎没有任何效果

【问题讨论】:

    标签: android android-viewpager


    【解决方案1】:

    您可以使用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

    【讨论】:

    • 那么这将是实现这一目标的最佳实践方式吗?如果不手动设置高度,就没有内置方法吗?
    【解决方案2】:

    这是另一种兼容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"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多