Как отключить тень вокруг вида карты в андроиде
Здравствуйте, я работаю над демо-приложением, в котором я использую вид карты в библиотеке поддержки. По умолчанию добавляется тень вокруг него. Я хочу удалить эту тень и должен выглядеть просто.
Я попробовал это, что не работает для меня.
CardView cardView = (CardView) v.findViewById(R.id.cardView);
cardView.setElevation(0);
После этого я получаю сбой
11-06 15:12:17.018: E/AndroidRuntime(24315): FATAL EXCEPTION: main
11-06 15:12:17.018: E/AndroidRuntime(24315): Process: com.xyz, PID: 24315
11-06 15:12:17.018: E/AndroidRuntime(24315): java.lang.NoSuchMethodError: android.support.v7.widget.CardView.setElevation
11-06 15:12:17.018: E/AndroidRuntime(24315): at com.xyz.adapters.RecycleViewAdapter.onCreateViewHolder(RecycleViewAdapter.java:85)
11-06 15:12:17.018: E/AndroidRuntime(24315): at com.xyz.adapters.RecycleViewAdapter.onCreateViewHolder(RecycleViewAdapter.java:1)
11-06 15:12:17.018: E/AndroidRuntime(24315): at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:2915)
11-06 15:12:17.018: E/AndroidRuntime(24315): at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:2511)
11-06 15:12:17.018: E/AndroidRuntime(24315): at android.support.v7.widget.LinearLayoutManager$RenderState.next(LinearLayoutManager.java:1425)
11-06 15:12:17.018: E/AndroidRuntime(24315): at android.support.v7.widget.LinearLayoutManager$RenderState.next(LinearLayoutManager.java:1425)
layout.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"
xmlns:app="http://schemas.android.com/apk/res/com.xyz"
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:orientation="horizontal" >
Спасибо заранее.
Ответы
Ответ 1
использовать этот атрибут в XML
card_view:cardElevation="0dp"
и запомните добавление xmlns:card_view="http://schemas.android.com/tools"
в корневой макет.
ИЛИ вы можете вызвать cardView.setCardElevation(0)
, чтобы программно отключить тень.
cardView.setElevation()
и атрибут CardView android:elevation
будут вызывать java.lang.NoSuchMethodError на платформе до Android 5.0
Ответ 2
Попробуйте установить высоту в Xml.
app:cardElevation="0dp"
ИЛИ
cardView.setCardElevation(0);
И проверьте, что вы используете последнюю библиотеку CardView.
Ответ 3
Вы можете иметь это в XML как:
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
app:cardElevation="0dp"
app:cardCornerRadius="0.5dp"
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true"
>
</android.support.v7.widget.CardView>
надеюсь, что это поможет вам.
Ответ 4
Вы должны сначала добавить это в родительский макет
xmlns:card_view="http://schemas.android.com/tools"
затем установите высоту, подобную этой
card_view:cardElevation="0dp"
Ответ 5
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardElevation="0dp"
app:cardCornerRadius="2dp">
....`
</android.support.v7.widget.CardView>
Ответ 6
попробуйте, как это может вам помочь,
CardView cardView = (CardView) v.findViewById(R.id.cardView);
cardView.setCardElevation(0);
Ответ 7
Вы должны использовать следующие атрибуты
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardElevation="0dp"
app:cardCornerRadius="0.5dp"
app:cardPreventCornerOverlap="false"
>
</android.support.v7.widget.CardView>
Ответ 8
Просто введите эту строку в свой CardView:
app:cardElevation="0dp"
Надеюсь, это поможет вам.
Ответ 9
CardView устанавливает свою собственную высоту во время инициализации, которая переопределит все, что вы установили из XML. Вы должны указать это как ошибку в chek this
@Override
public void initialize(CardViewDelegate cardView, Context context, int backgroundColor,
float radius) {
cardView.setBackgroundDrawable(new RoundRectDrawable(backgroundColor, radius));
View view = (View) cardView;
view.setClipToOutline(true);
view.setElevation(context.getResources().getDimension(R.dimen.cardview_elevation));
}