Как сделать закругленные углы для изображения в представлении изображения, используя макет XML в Android
Я пытался много раз, но я знаю, что я что-то упустил, не могли бы вы, ребята, пожалуйста, объясните это. Вот что я пытался
<ImageView
android:id="@+id/Dicimage"
android:layout_width="130px"
android:layout_height="100px"
android:src="@drawable/slang"
android:background="@drawable/corner"
android:padding="1dp"/>
Создан Уголок XML в папке ресурсов
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#fff"/>
<stroke android:width="0dp"
android:color="#ff000000"/>
<padding android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp"/>
<corners android:radius="30px"/>
</shape>
Что я получаю, так это то, что граница представляет собой только прямоугольник с закругленными углами, но изображение все еще имеет форму прямоугольника
4 ответа
Нет, это невозможно. Вы должны сделать это программно.
То, что вы делаете, это создаете фон с закругленными углами и рисуете над ним рисунок.
Вот отличная статья о том, как создать изображение закругленных углов из Romain Guy: http://www.curious-creature.org/2012/12/11/android-recipe-1-image-with-rounded-corners/
Вы можете добавить свой ImageView в CardView с атрибутом cardElevation=0
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/thumbnail_card"
card_view:cardCornerRadius="15dp"
card_view:cardElevation="0dp"
android:layout_margin="10dp">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="110dp"
android:layout_height="75dp"
android:scaleType="centerCrop" />
</android.support.v7.widget.CardView>
Используйте этот XML-файл в качестве переднего плана
Я имею в виду, вместо
android:background="@drawable/corner"
Использовать этот
android:foreground="@drawable/corner"
Вы должны добавить этот код как some_foreground.xml в папку для рисования.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<stroke
android:width="8dp"
android:color="@color/white" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<corners android:radius="@dimen/padding_margin_8" />
<stroke
android:width="8dp"
android:color="@color/white" />
</shape>
</item>
</layer-list>
И тогда вы можете использовать это в качестве переднего плана для вашего ImageView. Вы должны добавить это как:
<ImageView
android:id="@+id/event_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="@drawable/some_foreground"
android:scaleType="centerCrop"
android:src="@drawable/your_image" />
Попробуй это:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#ffffff"/>
<stroke android:width="3dp"
android:color="#ff000000"/>
<padding android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp"/>
<corners android:radius="30px"/>
</shape>
Взято из этого поста: Android ImageView с закругленными углами не работает
Вот супер поздний ответ, но если вы пытаетесь создать круговой ImageView:
Создайте отрисовку в папке для рисования под названием круг:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="@android:color/black"/>
<size
android:height="60dp"
android:width="60dp"/>
</shape>
ImageView:
<ImageView
android:id="@+id/Dicimage"
android:layout_width="130px"
android:layout_height="100px"
android:src="@drawable/slang"
android:background="@drawable/circle"
android:padding="1dp"/>