CardViewangular半径

有没有办法使CardView的顶部只有angular落半径?

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="10dp" > 

除非您尝试扩展Android CardView类,否则无法从XML自定义该属性。

尽pipe如此,还是有办法达到这个效果的。

CardView放置在另一个CardView并将透明背景应用于外部CardView并移除其angular落半径( "cornerRadios = 0dp" )。 例如,您的内部CardView将具有CardView的cornerRadius值。 然后将marginTop应用于内部CardView ,所以其下边界将被外部CardView 。 这样,内部CardView的底部圆angular半径将被隐藏。

XML代码如下:

  <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view_outer" android:layout_width="match_parent" android:layout_height="200dp" android:layout_gravity="center" card_view:cardBackgroundColor="@android:color/transparent" card_view:cardCornerRadius="0dp" card_view:cardElevation="3dp" > <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view_inner" android:layout_width="match_parent" android:layout_height="200dp" android:layout_gravity="center" android:layout_marginTop="3dp" card_view:cardBackgroundColor="@color/green" card_view:cardCornerRadius="4dp" card_view:cardElevation="0dp" > </android.support.v7.widget.CardView> </android.support.v7.widget.CardView> 

视觉效果如下:

仅在顶部有圆角的CardView

始终把你的内容在你的内心CardView 。 您的外部CardView仅提供“隐藏”内部CardView的底部圆angular的目的。

简单的方法

 dependencies: compile 'com.android.support:cardview-v7:23.1.1' <android.support.v7.widget.CardView android:layout_width="80dp" android:layout_height="80dp" android:elevation="12dp" android:id="@+id/view2" app:cardCornerRadius="40dp" android:layout_centerHorizontal="true" android:innerRadius="0dp" android:shape="ring" android:thicknessRatio="1.9"> <ImageView android:layout_height="80dp" android:layout_width="match_parent" android:id="@+id/imageView1" android:src="@drawable/Your_image" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"> </ImageView> </android.support.v7.widget.CardView> 

你可以使用这个可绘制的xml并设置为cardview的背景:

 <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ffffffff"/> <stroke android:width="1dp" android:color="#ff000000" /> <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> <corners android:topLeftRadius="7dp" android:topRightRadius="7dp"/> </shape> 

你需要做2件事情:

1)在您的CardView上调用setPreventCornerOverlap(false)

2)在CardView中放入圆形的 Imageview

关于四舍五入你的imageview,我有同样的问题,所以我build立了一个图书馆,你可以在每个angular落设置不同的半径 。 最后,我得到了我想要的结果如下。

https://github.com/pungrue26/SelectableRoundedImageView

CardView内部的圆角ImageView

我写了一个可绘制的lib自定义圆angular位置,它看起来像这样:

example.png

你可以在这里得到这个lib:

https://github.com/mthli/Slice

有一个例子,当卡在屏幕的最底部时,如何实现它。 如果有人有这样的问题,只是做这样的事情:

 <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="-5dp" card_view:cardCornerRadius="4dp"> <SomeView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="5dp"> </SomeView> </android.support.v7.widget.CardView> 

卡片视图具有负底部边缘。 卡片视图内的视图具有相同的正底部边缘。 这种方式圆形的部分隐藏在屏幕下方,但一切看起来完全一样,因为内部视图有一个反边缘。

你可以使用库: OptionRoundCardview

在这里输入图像说明

在Android Studio中实现它的最简单的方法解释如下:

步骤1:
build.gradle依赖关系中写下面的build.gradle

 compile 'com.android.support:cardview-v7:+' 

第2步:
复制下面的代码在您的XML文件集成CardView

对于cardCornerRadius工作,请务必在父级布局中包含以下行: xmlns:card_view="http://schemas.android.com/apk/res-auto"

请记住使用card_view作为名称空间来使用cardCornerRadius属性。

例如: card_view:cardCornerRadius="4dp"

XML代码:

 <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view_outer" android:layout_width="match_parent" android:layout_height="200dp" android:layout_gravity="center" card_view:cardBackgroundColor="@android:color/transparent" card_view:cardCornerRadius="0dp" card_view:cardElevation="3dp" > <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view_inner" android:layout_width="match_parent" android:layout_height="200dp" android:layout_gravity="center" android:layout_marginTop="3dp" card_view:cardBackgroundColor="@color/green" card_view:cardCornerRadius="4dp" card_view:cardElevation="0dp" > </android.support.v7.widget.CardView> </android.support.v7.widget.CardView>