Jad*_* Gu 25 android android-cardview android-5.0-lollipop
这是两张照片.
在棒棒糖上:

在预棒棒糖上:

我们可以看到它就在Lollipop的屏幕旁边.这就是我想要的.但在Pre-Lollipop设备上,屏幕边缘有额外的余量.你们有经验吗?谢谢.
这是布局xml:
<android.support.v7.widget.CardView
android:id="@+id/card_title_schedule"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
app:cardCornerRadius="0dp"
app:cardBackgroundColor="@color/colorAccent"
>
Run Code Online (Sandbox Code Playgroud)
sud*_*007 23
因此,在Kitkat,三星设备上完全没问题.
我试过card_view:cardUseCompatPadding="true"但没有用.没工作!
然后我从stackoverflow帖子中发现了这个
card_view:cardPreventCornerOverlap="false"和VOILA!成功了!没有圆角(因为卡片有图像背景,所以我不想要).
道德是,额外的填充是因为那些需要被禁用的小圆角.基本上这不是缺陷而是设计约束!
图像:请注意,顶角是边缘(有背景的颜色和图像的视图),而底部只有TextViews,因此没有背景,圆角.这意味着如果视图match_parent在CardView内部请求,card_view:cardPreventCornerOverlap="false"则允许在受影响的角落处进行查看.
小智 18
在L之前,CardView会在其内容中添加填充并为该区域绘制阴影.此填充量等于两侧的maxCardElevation +(1 - cos45)*cornerRadius,顶部和底部的maxCardElevation*1.5 +(1 - cos45)*cornerRadius.
从这里的CardView参考
尝试在CardView此上设置负左边距
<android.support.v7.widget.CardView
android:id="@+id/card_title_schedule"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
app:cardCornerRadius="0dp"
app:cardBackgroundColor="@color/colorAccent"
app:cardUseCompatPadding="true"
android:layout_marginLeft="-2dp" />
Run Code Online (Sandbox Code Playgroud)
您可能需要调整边距以获得所需的结果.
PS,这是一种hack-y方式.
小智 14
我意识到这已经得到了回答,但我想补充说,除此之外card_view:cardPreventCornerOverlap="false",我还必须设置CardView.setMaxCardElevation(0)摆脱前Lollipop的边缘.仅将高程设置为0不起作用.我正在使用支持库v23.4.0.
如果需要Android 4(棒棒糖之前)的行为,则添加app:cardUseCompatPadding="true"到中即可CardView解决该问题。
如果需要Android 5+的行为(根据材料指南,这实际上是名片视图的正确行为),那么就很难轻易实现完全相同的事情。我通常使用此修复程序来避免定义多个布局文件,并在所有设备上具有合理的输出:
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentPaddingRight="@dimen/fix_cardview"
app:contentPaddingLeft="@dimen/fix_cardview"
app:contentPaddingTop="@dimen/fix_cardview_vertical"
app:contentPaddingBottom="@dimen/fix_cardview_vertical" />
Run Code Online (Sandbox Code Playgroud)
在普通values/dimens.xml文件中,我们应该具有:
<dimen name="fix_cardview">-8dp</dimen>
<dimen name="fix_cardview_vertical">-12dp</dimen>
Run Code Online (Sandbox Code Playgroud)
并在values-v21/dimens.xml:
<dimen name="fix_cardview">0dp</dimen>
<dimen name="fix_cardview_vertical">0dp</dimen>
Run Code Online (Sandbox Code Playgroud)
请注意,数字-8dp和-12dp可能必须根据您的布局进行调整,因为它们取决于高程等。
这只是一种避免在Android 4视图中使用丑陋填充的解决方法,而无需在不同布局文件中使用不同视图(这通常会使代码更难维护)
| 归档时间: |
|
| 查看次数: |
22379 次 |
| 最近记录: |