Cardview - белая рамка вокруг карты
Я использую cardview как корень пользовательского представления, которое я пишу. Я использую библиотеку поддержки v7. Мой XML выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<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="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="6dp"
card_view:cardElevation="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- some other views -->
</LinearLayout>
</android.support.v7.widget.CardView>
Моя проблема в том, что я получаю белую рамку вокруг моего вида карты. Похоже, что там указывается высота, так как она толще с правой стороны. Я попытался настроить cardElevation
и MaxCardElevation
в моем XML так:
card_view:cardElevation="0dp"
и в коде в моем пользовательском представлении, которое расширяет CardView и использует этот макет:
setCardElevation(0);
setMaxCardElevation(0);
Но белая граница сохраняется. Я не уверен, как избавиться от него. Если бы кто-нибудь имел какое-либо влияние на то, почему это происходит, или предложения о том, как я могу удалить белую границу, это будет оценено по достоинству. Большое спасибо.
Ответы
Ответ 1
Я знаю это немного позже, но для тех, у кого есть аналогичная проблема:
У меня была такая же проблема: белая рамка была показана на устройствах с предварительным лепестком.
Я решил настроить cardPreventCornerOverlap на false
на ваш XML.
Вот так:
<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="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="6dp"
card_view:cardPreventCornerOverlap="false">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- some other views -->
</LinearLayout>
</android.support.v7.widget.CardView>
Надеюсь, это поможет!
Ответ 2
Поддержка CardView не поддерживает обрезку контента, потому что она дорогая для старых устройств. Он позволяет обрезать контент с использованием режимов Canvas.saveLayer/restoreLayer и PorterDuff. Вот как Carbon реализует закругленные углы с правильным отсечением содержимого. См. Изображение:
![введите описание изображения здесь]()
Ответ 3
Я мог бы опоздать в игре, но у меня была такая же проблема. Просто хотел поделиться простым решением!
Мое пользовательское представление расширило CardView
, и я применил маркер к корневому элементу (т.е. CardView
) в XML, как в исходном вопросе. Это закончило тем, что дало мне дополнительную белую границу:
![До]()
Решение заключалось в том, чтобы переместить маркер из корня XML пользовательского вида в объявление вашего пользовательского представления (отметьте комментарии в фрагменте)
Фрагмент кода:
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/cvSettings"
style="@style/DefaultCardViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/default_margin" <!-- Remove this -->
app:cardElevation="@dimen/default_card_elevation">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
.
.
.
</android.support.v7.widget.CardView>
Закончилось просто перемещение по полям в мое пользовательское объявление вида, которое избавилось от дополнительной белой границы:
<com.example.android.custom.MyCustomView
android:id="@+id/custom_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/default_margin" <!-- Move it here-->
cv:pt_widgetColor="@color/colorAccent" />
После смены, намного чище:):
![введите описание изображения здесь]()
Ответ 4
использовать cardBackgroundColor = "color" в xml card_view
образец кода:
<android.support.v7.widget.CardView
android:id="@+id/card_view_khaterat"
android:layout_width="250dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
app:cardBackgroundColor="#f56f6c"/>