nom*_*ngo 61 android padding android-cardview android-5.0-lollipop
我正在使用android:paddingLeft并android:paddingTop为新CardView窗口小部件设置填充但它不起作用.
我可以为其中的所有控件设置余量CardView作为变通方法,但如果控件太多,那就太痛苦了.
如何为新的cardview小部件设置填充?
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="200dp"
android:paddingLeft="20dp"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="20dp"
android:paddingBottom="@dimen/activity_vertical_margin"
card_view:cardCornerRadius="2dp">
<TextView
android:id="@+id/info_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!"/>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)
yar*_*ian 182
CardView应该使用contentPadding它附带的属性来处理这个问题:
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="200dp"
card_view:cardCornerRadius="2dp"
card_view:contentPaddingLeft="20dp"
card_view:contentPaddingRight="@dimen/activity_horizontal_margin"
card_view:contentPaddingTop="20dp"
card_view:contentPaddingBottom="@dimen/activity_vertical_margin">
<TextView
android:id="@+id/info_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!"/>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)
ala*_*anv 63
L-preview之前的CardView RoundRectDrawableWithShadow用于绘制其背景,该覆盖Drawable.getPadding()将覆盖以添加阴影填充.通胀后通过代码设置视图背景,这将覆盖XML中指定的任何填充.
您有两种选择:
View.setPadding()并小心调整阴影(但仅在L-preview之前!).后一种选择是最安全的.
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="200dp"
card_view:cardCornerRadius="2dp">
<FrameLayout
android:paddingLeft="20dp"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="20dp"
android:paddingBottom="@dimen/activity_vertical_margin">
<TextView
android:id="@+id/info_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World!"/>
</FrameLayout>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)
Ano*_*age 30
如果你想在pre-L设备上使用CardView填充,并且在Lollipop +设备上看起来一样,那么你将需要使用setUseCompatPadding(true)或者XML变体cardUseCompatPadding="true".
这是因为"CardView添加额外的填充以在L之前在平台上绘制阴影."[1]因此,默认实现具有不同的API版本看起来不同并且视图可能无法正确排列.因此,解决该问题的最简单方法是上述方法,或者使用边距.
<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:layout_width="match_parent"
android:layout_height="wrap_context"
card_view:cardUseCompatPadding="true"
card_view:contentPadding="8dp"
card_view:cardCornerRadius="4dp" >
...
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)
[1] CardView.setUseCompatPadding(boolean)
[2] android.support.v7.cardview:cardUseCompatPadding