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>
如何确保图像在父级的定义半径范围内,而不是重叠。
答案 0 :(得分:0)
你必须使用roundedCorners制作你的图像。
对于像Glide和毕加索这样的图像加载库,已经有很多可用的转换。
您必须使用RoundedCornersTransformation
Glide.with(this).load(url)
.apply(RequestOptions.bitmapTransform(
new RoundedCornersTransformation(this, 10, 10))).into(mImageView);
对于转换,您可以参考glide-transformations。