我正在使用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>
字符串
5条答案
按热度按时间krugob8w1#
CardView应该使用它附带的
contentPadding
属性来处理这个问题:字符串
kg7wmglp2#
L预览之前的CardView使用
RoundRectDrawableWithShadow
绘制其背景,该背景覆盖Drawable.getPadding()
以添加阴影填充。视图背景在展开后通过代码设置,这将覆盖XML中指定的任何填充。您有两种选择:
1.在运行时使用
View.setPadding()
设置填充,并注意调整阴影(但仅在L预览之前!).1.将所有内容放置在指定填充的布局内。
后一种选择是最安全的。
字符串
kmbjn2e33#
如果你想在L前设备上使用CardView填充,并且在Lollipop+设备上看起来相同,那么你需要使用
setUseCompatPadding(true)
,或者XML变体cardUseCompatPadding="true"
。这是因为“CardView添加了额外的填充以在L之前的平台上绘制阴影。”[1]因此,默认的实现有不同的API版本看起来不同,视图可能无法正确排列。所以,解决这个问题的最简单方法是上面提到的方法,或者使用边距代替。
示例代码
字符串
来源
[1]CardView.setUseCompatPadding(boolean)
[2]android.support.v7.cardview:cardUseCompatPadding
dy2hfwbg4#
这就是我的工作-把每个项目放在一个框架布局中
字符串
仔细检查card_view是否为“http://schemas.android.com/apk/res-auto”而不是工具,并在框架视图上设置负边距以保持阴影-工作正常。
xfyts7mz5#
只需在下面添加两行
字符串
就这样享受你的编程…