CardView с другим угловым радиусом - PullRequest
0 голосов
/ 04 июля 2018

У меня есть следующий CardView, и я хочу установить различный радиус для каждого угла карты. Можно ли изменить их с помощью 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:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginRight="16dp"
    android:layout_marginLeft="16dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    app:cardCornerRadius="0dp"
    app:cardElevation="0dp">
</android.support.v7.widget.CardView>

EDIT Как предполагает Avinash, я ищу поведение этой библиотеки lib github.com / captain-miao / OptionRoundCardview , но с использованием элемента CardView по умолчанию. Если это невозможно изменить индивидуально, этот lib - хороший подход.

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Привет, вы можете добавить его программно или в формате xml со следующим кодом.

app:cardCornerRadius="0dp"// xml
cardView.setRadius(0);

это тот, кто ищет высоту

app:cardElevation="0.7dp"//xml
app:cardMaxElevation="1dp"//xml
cardView.setCardElevation(2.1f);//code
cardView.setMaxCardElevation(3f);//code

Полное представление Java в CardView XML.

CardView cardView = (CardView) findViewById(R.id.cardView);
cardView.setUseCompatPadding(true);
cardView.setContentPadding(30, 30, 30, 0);
cardView.setPreventCornerOverlap(true);
cardView.setCardBackgroundColor(Color.WHITE);
cardView.setCardElevation(2.1f);
cardView.setRadius(0);
cardView.setMaxCardElevation(3f);
0 голосов
/ 04 июля 2018

Вы можете создать пользовательский xml и назвать его rounded_corners.xml следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="1dp"
    android:topLeftRadius="20dp"
    android:topRightRadius="30dp"
    android:bottomLeftRadius="40dp"
    android:bottomRightRadius="50dp"/>
<solid android:color="your_background_color" />
</shape>

А затем используйте это как фон для вашего CardView:

android:background="@drawable/rounded_corners"

РЕДАКТИРОВАТЬ: Я только что заметил, что это может работать для всех других представлений, кроме CardView, поэтому обратитесь к этот вопрос , чтобы увидеть, как сделать обходной путь.

...