我已使用Imageview创建了布局,并设置了具有转角半径的自定义背景,父级布局已设置为圆角,但Imageview未设置为圆角。我该如何实现?
谢谢。
bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<solid
android:color="@color/list_item_bg"/>
<stroke
android:width="2dp"
android:color="@color/colorAccent" />
<corners
android:topLeftRadius="20dp"
android:topRightRadius="20dp"/>
</shape>
list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_item_bg"
>
<ImageView
android:id="@+id/food_image"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginRight="5dp"
android:layout_marginLeft="5dp"
android:layout_marginTop="2dp"
android:scaleType="centerCrop"
android:clipToOutline="true"
android:background="@drawable/image_bg"
android:src="@drawable/sample_image"/>
</LinearLayout>
答案 0 :(得分:3)
创建res / drawable / round_outline.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
</shape>
将可绘制对象设置为ImageView的背景
android:background="@drawable/round_outline"
在ImageView(布局)上
android:clipToOutline="true"
答案 1 :(得分:2)
现在,在支持库的v21中,有一个解决方案:称为RoundedBitmapDrawable。
基本上,它就像普通的Drawable一样,不同之处在于您为它提供了用于裁剪的角半径:
setCornerRadius(float cornerRadius)
因此,从Bitmap src和目标ImageView开始,它将看起来像这样:
RoundedBitmapDrawable dr = RoundedBitmapDrawableFactory.create(res, src);
dr.setCornerRadius(cornerRadius);
imageView.setImageDrawable(dr);