如何在Android中使用XML布局为图像视图中的图像制作圆角

问题描述 投票:1回答:6

我已经尝试了很多次,但我知道我错过了一些东西,你能不能请大家解释一下..以下是什么,我试过了

    <ImageView
        android:id="@+id/Dicimage"
        android:layout_width="130px"
        android:layout_height="100px"
        android:src="@drawable/slang"
        android:background="@drawable/corner"
        android:padding="1dp"/>

在资源文件夹中创建了Corner 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>

我得到的是,边框只是圆角矩形,但图像仍然是矩形的形状

android android-layout android-emulator android-widget
6个回答
3
投票

不,那是不可能的。你必须以编程方式完成它。

你正在做的是创建圆角背景并在其上绘制drawable。

这是关于如何从Romain Guy创建圆角图像的精彩文章:http://www.curious-creature.org/2012/12/11/android-recipe-1-image-with-rounded-corners/


1
投票

试试这个 :

<?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 with Rounded Corners not working


0
投票

使用该xml文件作为前台

我的意思是,而不是

android:background="@drawable/corner"

用这个

android:foreground="@drawable/corner"

0
投票

这是一个超级迟到的答案,但如果你想创建一个圆形的ImageView:

在drawable文件夹中创建一个名为circle的drawable:

<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"/>

0
投票

您应该将此代码作为some_foreground.xml添加到drawable文件夹中。

<?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" />

0
投票

您可以在CardView中添加属性cardElevation = 0的ImageView

<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>
© www.soinside.com 2019 - 2024. All rights reserved.