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的视图顶部使用nestedScrollView中的viewpager
如何在 Android Studio 中的 ViewPager 小部件之上设置布局