viewpager 中的剪辑布局

Posted

技术标签:

【中文标题】viewpager 中的剪辑布局【英文标题】:Clip layout in viewpager 【发布时间】:2015-08-17 10:48:40 【问题描述】:

viewPager 没什么问题。我有显示 RoundedImageView 的 4 个片段的 ViewPager。 RoundedImageView 有一个圆角。当我从右向左滑动时,角落没有变圆。看起来像这样:

我为 viewpager 设置了白色圆形背景。当我没有显示 RoundedImageView(is hide) 时,一切都很好,我总是在视图寻呼机中圆角背景。

我尝试设置 clipChildren,但失败了。我不知道如何解决我的问题。

[编辑:]

RoundedClipingLayout 有另一个问题:W/OpenGLRenderer:位图太大,无法上传到纹理中(1726620832x0,max=4096x4096)

【问题讨论】:

这对我有帮助。 github.com/venator85/RoundClippingLayout/blob/master/src/com/… 显示RoundClippingLayout时,背景RoundClippingLayout不可见?这是你的问题吗? 当我使用 RoundClippingLayout 时出现问题:位图太大而无法上传到纹理中。这是我现在的问题。 这是 android 中一个非常知名的问题,请查看此链接 ***.com/questions/477572/… 对不起,现在对我有帮助。我有 RoundClippingLayout imageView 和几个 LinearLayout(+ TextViews)。我想剪裁侧面 roundClippingLayouts 中的所有视图 【参考方案1】:

我使用这个解决方案。如果有人想检查或使用:

public class RoundClippingLinearLayout extends LinearLayout 
    private RectF rect;
    private int mCornerRadius = 10;

    public RoundClippingLinearLayout(Context context, AttributeSet attrs) 
        super(context, attrs);
        onInit();
    

    public RoundClippingLinearLayout(Context context) 
        super(context);
        onInit();
    

    protected void onInit() 
        mCornerRadius = getResources().getDimensionPixelOffset(R.dimen.radius);

        setWillNotDraw(false);
        setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) 
        super.onSizeChanged(w, h, oldw, oldh);
        if (w != oldw && h != oldh) 
            rect = new RectF(0, 0, w, h);
        
    


    @Override
    protected void dispatchDraw(Canvas canvas) 
        canvas.setDrawFilter(new PaintFlagsDrawFilter(1, Paint.ANTI_ALIAS_FLAG));

        Path clipPath = new Path();
        clipPath.addRoundRect(rect, mCornerRadius, mCornerRadius, Path.Direction.CW);
        canvas.clipPath(clipPath);

        super.dispatchDraw(canvas);
    

【讨论】:

以上是关于viewpager 中的剪辑布局的主要内容,如果未能解决你的问题,请参考以下文章

可滚动布局中的 ViewPager

如何在viewPager的视图顶部使用nestedScrollView中的viewpager

如何在 Android Studio 中的 ViewPager 小部件之上设置布局

ViewPager 中的膨胀布局

约束布局中的 ViewPager 选项卡式活动在底部被剪切以用于 recyclerview

关于viewpager无法滑动