CardView на Android 5.1 - зачем показывать ромб вместо круга?

У меня есть CardView с ImageView:

<android.support.v7.widget.CardView
        android:id = "@+id/message_avatar_card"
        android:layout_width = "40dp"
        android:layout_height = "40dp"
        android:layout_marginEnd = "4dp"
        android:layout_marginStart = "4dp"
        app:cardCornerRadius = "40dp"
        android:innerRadius = "0dp"
        android:thicknessRatio = "1.9"
        android:background = "@color/fui_transparent">

        <ImageView
            android:id = "@+id/message_avatar"
            android:layout_width = "40dp"
            android:layout_height = "40dp"
            android:src = "@drawable/ic_person_black_24dp"
            android:layout_marginEnd = "4dp"
            android:scaleType = "centerCrop"
            android:background = "@color/fui_transparent"/>
    </android.support.v7.widget.CardView>

На Android 9.0 все в порядке, см. Снимок экрана

CardView на Android 5.1 - зачем показывать ромб вместо круга?

Но на Android 5.1 я вижу ромб, а не кружок

CardView на Android 5.1 - зачем показывать ромб вместо круга?

Как это исправить?

почему бы тебе не использовать CircleImageView

AskNilesh 25.10.2018 09:20

Я хочу обойтись без третьей реализации

Артем Ильинский 25.10.2018 09:21

проверьте это чем stackoverflow.com/a/43378661/7666442

AskNilesh 25.10.2018 09:23
0
3
114
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Правильный код

<android.support.v7.widget.CardView
        android:id = "@+id/message_avatar_card"
        android:layout_width = "40dp"
        android:layout_height = "40dp"
        android:layout_marginEnd = "4dp"
        android:layout_marginStart = "4dp"
        app:cardCornerRadius = "20dp"
        android:innerRadius = "0dp"
        android:thicknessRatio = "1.9"
        android:background = "@color/fui_transparent">

        <ImageView
            android:id = "@+id/message_avatar"
            android:layout_width = "40dp"
            android:layout_height = "40dp"
            android:src = "@drawable/ic_person_black_24dp"
            android:layout_marginEnd = "4dp"
            android:scaleType = "centerCrop"
            android:background = "@color/fui_transparent"/>
    </android.support.v7.widget.CardView>

Используйте библиотеку CircleImageView:

implementation 'de.hdodenhof:circleimageview:2.2.0'

в XML:

<de.hdodenhof.circleimageview.CircleImageView
        xmlns:app = "http://schemas.android.com/apk/res-auto"
        android:id = "@+id/message_avatar"
        android:layout_width = "75dp"
        android:layout_height = "75dp"
        android:src = "@drawable/avatar"
        app:civ_border_width = "2dp"
        android:layout_gravity = "center"
        app:civ_border_color = "YOUR_COLOR"/> // if you don't want give any border remove this line

В java:

CircleImageView message_avatar = (CircleImageView) findViewById(R.id.message_avatar);

если вы устанавливаете изображение динамически, используйте библиотеку Picasso:

implementation 'com.squareup.picasso:picasso:2.5.2'

в Java

Picasso.with(context).load(IMAGE_PATH).into(message_avatar);

Другие вопросы по теме