在Android中的图像视图边框?

我怎样才能设置一个ImageView边框,并改变其Android的颜色?

我将下面的xml设置为图像视图的背景为Drawable。 有用。

 <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF" /> <stroke android:width="1dp" android:color="#000000" /> <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> </shape> 

然后将android:background="@drawable/yourXmlFileName"ImageView

以下是我曾经有黑色边框的代码。 请注意,我没有使用额外的XML文件的边界。

 <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/red_minus_icon" android:background="#000000" android:padding="1dp"/> 

这是我知道的一个老post,但我认为这可能会帮助那里的人。

如果你想模拟一个半透明的边框,不重叠的形状的“固体”的颜色,然后用你的XML。 请注意,我完全不使用“stroke”标签,因为它似乎总是与实际绘制的形状重叠。

  <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <solid android:color="#55111111" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> <corners android:radius="5dp" /> </shape> </item> <item> <shape android:shape="rectangle" > <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" /> <solid android:color="#ff252525" /> </shape> </item> </layer-list> 

ImageView在xml文件中

 <ImageView android:id="@+id/myImage" android:layout_width="100dp" android:layout_height="100dp" android:padding="1dp" android:scaleType="centerCrop" android:cropToPadding="true" android:background="@drawable/border_image" android:src="@drawable/ic_launcher" /> 

用border_image.xml的名字保存下面的代码,它应该在可绘制的文件夹中

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#ffffff" android:endColor="#ffffff" android:angle="270" /> <corners android:radius="0dp" /> <stroke android:width="0.7dp" android:color="#b4b4b4" /> </shape> 

如果你想给圆angular的图像的边界,那么你可以改变border.xml文件中的一行

  <corners android:radius="4dp" /> 

这已经在上面使用,但没有专门提到。

 setCropToPadding(boolean) If true, the image will be cropped to fit within its padding. 

这将使ImageView源适应添加到其背景的填充。

通过XML可以如下所示,

 android:cropToPadding="true" 

添加背景可绘制像res / drawables / background.xml:

 <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@android:color/white" /> <stroke android:width="1dp" android:color="@android:color/black" /> </shape> 

更新res / layout / foo.xml中的ImageView背景:

 ... <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="1dp" android:background="@drawable/background" android:src="@drawable/bar" /> ... 

如果您希望src在背景上绘制,请排除ImageView填充。

我发现这样做更容易:

1)编辑框架内有内容(用9patch工具)。

2)将ImageView放置在一个Linearlayout ,并将所需的框架背景或颜色设置为Linearlayout的背景。 当您设置框架将内容放入其中时,您的ImageView将位于框架内部(您可以使用9patch工具设置内容)。

你必须在res / drawable这个代码中创build一个background.xml

 <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF" /> <corners android:radius="6dp" /> <stroke android:width="6dp" android:color="@android:color/white" /> <padding android:bottom="6dp" android:left="6dp" android:right="6dp" android:top="6dp" /> </shape> 

以下是我解决这个冗长麻烦的最简单的方法。

 <FrameLayout android:layout_width="112dp" android:layout_height="112dp" android:layout_marginLeft="16dp" <!-- May vary according to your needs --> android:layout_marginRight="16dp" <!-- May vary according to your needs --> android:layout_centerVertical="true"> <!-- following imageView acts as the boarder which sitting in the background of our main container ImageView --> <ImageView android:layout_width="112dp" android:layout_height="112dp" android:background="#000"/> <!-- following imageView holds the image as the container to our image --> <!-- layout_margin defines the width of our boarder, here it's 1dp --> <ImageView android:layout_width="110dp" android:layout_height="110dp" android:layout_margin="1dp" android:id="@+id/itemImageThumbnailImgVw" android:src="@drawable/banana" android:background="#FFF"/> </FrameLayout> 

在下面的答案中,我已经解释得很好,请看看这个!

我希望这将有助于其他人在那里!

在我用过的同一个xml中:

  <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#ffffff" <!-- border color --> android:padding="3dp"> <!-- border width --> <ImageView android:layout_width="160dp" android:layout_height="120dp" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:scaleType="centerCrop" /> </RelativeLayout>