我正在使用卡片视图,但高程和卡片视图属性在版本5.0以下不起作用。
我尝试使用card_view:cardUseCompatPadding =" true"通过搜索一些SO帖子,但这也没有用。
看起来应该是这样的
在4.2.2
上看起来像这样这是布局:
IXmlSerializable
编辑:我创建了9个这样的补丁文件
但是这给出了这个错误:
<android.support.v7.widget.CardView
xmlns:app="http://schemas.android.com/tools"
android:id="@+id/card_view"
app:cardUseCompatPadding="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="05dp"
android:layout_marginTop="05dp"
card_view:cardElevation="12dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/bg">
<View
android:layout_width="3dp"
android:layout_height="match_parent"
android:background="@color/cardLineColor"></View>
<LinearLayout
android:id="@+id/linearLayout6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginEnd="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginStart="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/txt_id"
android:layout_width="103dp"
android:layout_height="wrap_content"
android:text="ID"
android:textColor="@color/white" />
<TextView
android:id="@+id/txt_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="05dp"
android:text="23/3/2015"
android:textColor="@color/textColor"
android:textSize="10sp" />
</LinearLayout>
<TextView
android:id="@+id/txt_trans_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/linearLayout6"
android:layout_centerHorizontal="true"
android:text="sent money"
android:textColor="@color/white"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/linearLayout8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/linearLayout6"
android:layout_marginEnd="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginStart="10dp"
android:layout_toEndOf="@+id/txt_trans_type"
android:layout_toRightOf="@+id/txt_trans_type"
android:orientation="vertical">
<TextView
android:id="@+id/txt_balance"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:text="$3214"
android:textAlignment="viewEnd"
android:textColor="@color/white"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="05dp"
android:text="@string/balance"
android:textAlignment="viewEnd"
android:textColor="@color/white"
android:textSize="10sp" />
</LinearLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
可能是它的高度宽度多少?我试过很小的高度但是它留下了一些空隙。如何将其与所有设备匹配?
答案 0 :(得分:0)
可悲的是,正如您所提到的那样,提升不适用于API 19及更低版本。
我为类似问题选择的解决方案是通过常规布局替换我的cardviews并使用9-patch图像作为背景来生成阴影。它具有非常可调节的优点,而且,与高程属性不同,如果您不想要简单的黑色阴影,则可以进行更多自定义,如阴影颜色。
唯一的问题是您必须自己设计图像并将其添加到项目中。但不要害怕,有一些方便的生成器,如this one,可以为你生成它。只需确保设置的最小尺寸小于布局,以确保它适合而不会使其变形。我通常生成一个10 * 10像素宽的图像,即使应用到更大的视图,阴影也不会变形。
当您获得图像(名称应该类似于myimage.9.png)时,只需将其添加到您的drawable中,而不删除.9.png扩展名,然后将其设置为可绘制到布局的常规背景,通过xml或代码。而且你已经完成了!
编辑:没有注意到你在卡片顶部也有照明..如果你有类似Photoshop的东西你可以尝试的是,通过对暗色调应用阴影来创建自己的9补丁,然后创建第二个图层以添加另一个投影,但这次设置为白色并使用适当的角度在上面显示。然后将其保存为png并使用9-patch生成器将其转换为.9.png图像。See the 9-patch documentation here.如果你正在使用Android Studio,那么还有一个用于9补丁的内置生成器。
可悲的是,在Material Design介入Android 5之前,用户界面对于像阴影这样的高级显示是有限的。也许您可以通过编程方式添加卡片视图,这样就可以做到这样的事情
if (android.os.Build.VERSION.SDK_INT <= android.os.Build.VERSION_CODES.LOLLIPOP){
//Add regular layout to your views with 9 patch
} else{
//Add cardview to get desired effect
}
这样,您的大多数用户都会拥有所需的卡片视图,但如果您需要使用可点击/可拖动的元素等,它可以快速增加您需要的代码量。
答案 1 :(得分:0)
使用app:cardElevation="12dp"
而不是card_view:cardElevation="12dp"
希望它有所帮助。