在linearLayout中防止CornerOverlapping

时间:2018-01-09 10:13:00

标签: android android-layout

Imageview是一个包含在线性布局中的。 linearlayout具有圆形背景。我希望imageView不要重叠linearlayout的圆角。 Cardview做了类似的事情,但我不想要所有的角落半径。

这是我的代码段。

<LinearLayout
        android:background="@drawable/bottom_sheet_top_stroke"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.github.chrisbanes.photoview.PhotoView
            android:id="@+id/preview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:minHeight="300dp"
            android:scaleType="center" />

    </LinearLayout>

bottom_sheet_top_stroke

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:top="0dp"
        android:left="-6dp"
        android:right="-6dp"
        android:bottom="-32dp">

        <shape android:shape="rectangle">
            <solid android:color="@color/dark"/>
            <stroke
                android:width="5dp"
                android:color="@color/white"/>
            <corners android:radius="40dp"/>
        </shape>
    </item>
</layer-list>

如何确保图像在父级的定义半径范围内,而不是重叠。

1 个答案:

答案 0 :(得分:0)

你必须使用roundedCorners制作你的图像。

对于像Glide和毕加索这样的图像加载库,已经有很多可用的转换。 您必须使用RoundedCornersTransformation

  Glide.with(this).load(url)
            .apply(RequestOptions.bitmapTransform(
                    new RoundedCornersTransformation(this, 10, 10))).into(mImageView);

对于转换,您可以参考glide-transformations