[英]Different results of Android Support Library's CardView on different devices
使用Android Support Library
v7小部件CardView
我看到Galaxy S4与Nexus 4设备相比有不同的结果。 具有以下布局:
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:orientation="horizontal"
card_view:cardCornerRadius="7dp"
card_view:cardElevation="12dp">
<ScrollView
android:id="@+id/scrollView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true">
<TextView
android:id="@+id/txtExample"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_messages" />
</ScrollView>
</android.support.v7.widget.CardView>
我得到了这些结果:
Nexus 4(5.0.1):
三星Galaxy S4(4.4.2):
似乎Nexus上的那个用它的边缘计算视图,然后在外面绘制阴影。 另一方面,三星之一似乎应用了边距,然后在内部绘制阴影,直到达到计算出的View界限。
我错过了什么吗?
你所有的观察都是正确的:)
在CardView的官方文档中,一切都得到了很好的解释:
在L之前,CardView会在其内容中添加填充并为该区域绘制阴影。 此填充量等于两侧的maxCardElevation +(1 - cos45)* cornerRadius,顶部和底部的maxCardElevation * 1.5 +(1 - cos45)* cornerRadius。
和:
请注意,如果您为CardView指定了精确的尺寸,由于阴影,其内容区域在L之前和L之后的平台之间会有所不同。通过使用api版本特定的资源值,您可以避免这些更改。 或者,如果您希望CardView在平台L和之后添加内部填充,您可以将setUseCompatPadding(boolean)设置为true。
如上所述 - 你应该只使用setUseCompatPadding (true)
然后使用外部填充: L和pre-L将是相同的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.