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
的底部圆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落设置不同的半径 。 最后,我得到了我想要的结果如下。
有一个例子,当卡在屏幕的最底部时,如何实现它。 如果有人有这样的问题,只是做这样的事情:
<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>