Android CardView удаляет прописку
как мне избавиться от этого странного дополнения в макете ниже:
![enter image description here]()
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="match_parent"
android:orientation="vertical"
android:background="@color/ColorPrimaryDark">
<android.support.v7.widget.CardView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="10dp"
android:layout_marginTop="9dp"
android:layout_marginLeft="9dp"
android:layout_marginRight="9dp"
card_view:cardElevation="0.01dp"
android:layout_marginBottom="0dp"
card_view:cardPreventCornerOverlap="true"
card_view:cardUseCompatPadding="true"
card_view:cardBackgroundColor="@color/ColorPrimary">
<RelativeLayout
android:id="@+id/top_layout"
android:layout_width="fill_parent"
android:layout_height="180dp"
android:background="@color/ColorPrimary">
<ImageView
android:id="@+id/img_thumbnail"
android:layout_width="fill_parent"
android:layout_height="180dp"
android:scaleType="fitXY"
android:background="@drawable/korabltest"/>
<RelativeLayout
android:id="@+id/inner_layout"
android:layout_width="fill_parent"
android:layout_height="36dp"
android:background="#5c1b1b1b"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<TextView
android:id="@+id/tv_nature"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:layout_gravity="bottom"
android:gravity="center_vertical"
android:alpha="0.8"
android:textColor="#fff"
android:textSize="18sp"
android:text="Lexington"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:id="@+id/tv_nature_1"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:layout_gravity="bottom"
android:gravity="center_vertical"
android:alpha="0.8"
android:textColor="#fff"
android:textSize="18sp"
android:textStyle="bold"
android:text="527 (31%)"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
Ответы
Ответ 1
UDPATE
Ну, кажется, есть гораздо более простой способ сделать это, не догадываясь о дополнении и всем:
card_view:cardPreventCornerOverlap="false"
или используя java:
cardView.setPreventCornerOverlap(false)
Вы можете прочитать все об этом здесь.
ОРИГИНАЛЬНЫЙ ОТВЕТ
Это преднамеренное отступы, чтобы избежать утечки содержимого из закругленного угла карты в версиях до леденцов (так как отсечение недоступно). Если вы хотите избавиться от всего этого, вы можете использовать отрицательное дополнение в версиях до леллипопа для атрибута contentPadding
CardView
, например:
card_view:contentPadding="-8dp"
или используя java:
int padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics());
cardView.setContentPadding(-padding,-padding,-padding,-padding);
Я не особо уверен, какое значение будет работать без проблем, вам нужно будет поэкспериментировать и убедиться сами.
Ответ 2
У меня была та же проблема, и этот работал у меня.
app:cardPreventCornerOverlap="false"
Для устройства с API < 21, мне пришлось создать собственный класс ImageView, переопределить onDraw, чтобы нарисовать круглые углы.
@Override
protected void onDraw(Canvas canvas) {
float radius = getContext().getResources().getDimension(R.dimen.card_corner_radius);
Path path = new Path();
RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight());
path.addRoundRect(rect, radius, radius, Path.Direction.CW);
canvas.clipPath(path);
super.onDraw(canvas);
}
Ответ 3
Пожалуйста, удалите это из своего кода -
card_view:cardUseCompatPadding="true"