使ImageView适合CardView的宽度
我有一个圆angular的CardView
,我想在顶部有一个ImageView
,如下面的材料devise指南中所示的示例所示。
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_width="wrap_content" android:layout_height="wrap_content" card_view:cardCornerRadius="4dp"> <!-- ... --> </android.support.v7.widget.CardView>
然后在CardView
里面有这个ImageView
<ImageView android:id="@+id/imageView" android:layout_width="fill_parent" android:layout_height="150dp" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:scaleType="centerCrop" android:src="@drawable/default_cover" />
如果我有card_view:cardCornerRadius
设置为0dp
那么ImageView
就像我想要的那样适合卡片。
但是, 材料devise指南指出卡片应该有圆angular,而不是方angular。
我遇到的问题是,当我将card_view:cardCornerRadius
设置为card_view:cardCornerRadius
以外的0dp
,例如4dp
,则会发生以下情况:
可以看出, ImageView
不适合CardView
。
我的问题是,如何使这个ImageView
适合CardView
的布局,当它有圆angular。
我通过在RoundedImageView
放置一个RoundedImageView
来实现这个CardView
。 您还需要设置适当的CardView
属性。
https://medium.com/@etiennelawlor/layout-tips-for-pre-and-post-lollipop-bcb2e4cdd6b2#.kmb24wtkk
你需要做2件事情:
1)在您的CardView上调用setPreventCornerOverlap(false)
。
2)在CardView中放入圆形的 Imageview
关于四舍五入你的imageview,我有同样的问题,所以我做了一个库,你可以在每个angular落设置不同的半径 。 有一个好的库(vinc3m1的RoundedImageView)支持ImageView上的圆angular,但是它只支持每个angular上相同的半径。 但是我希望它只能左上angular和右上angular四舍五入。
最后,我得到了我想要的结果如下。
如果您的图像大小(宽度)使用ImageView
宽度固定,则只需将ImageView
属性更改为:
android:scaleType="fitXY"
那是。 没有额外的图像angular落四舍五入,没有繁忙的工作。 除此之外,应用程序的性能也很有效。
注意:我的build议可能不适合大尺寸ImageView
小图像。
编辑2015/09/29
https://github.com/vinc3m1/RoundedImageView添加了对所选angular落舍入的支持;
您也可以使用makeramen RoundedImageView https://github.com/vinc3m1/RoundedImageView ,并删除CardView中的LolliPop使用前的自动填充
yourCardView.setPreventCornerOverlap(假);
然后设置填充你需要显示cardview的阴影
在drawable
文件夹中创build一个bck_rounded.xml
。 给它一个与card_view相同的半径。
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="4dp" /> </shape>
把它应用到你的android:background="@drawable/bck_rounded.xml"
– android:background="@drawable/bck_rounded.xml"
我解决了设置的问题
1) app:cardUseCompatPadding="false"
2)设置一个圆angular的imageView
背景
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="4dp" /> </shape>