带有圆角的ImageView通过另一个图像作为背景

时间:2012-06-21 07:18:46

标签: android imageview layer

我有两个图像 - 1)一个矩形图像,显示实际内容和2)带有圆角透明边角的白色图像

是否可以将图像1放在图像2中,保持其大小,但使其形状与2相同?

基本上我希望Image 2成为图像1的容器。

我已经尝试了图层和插图绘图,但图像1一直重叠图像2。

提前致谢!

更新1:

这是我的ImageView xml部分:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="72dp"
android:orientation="horizontal">

    <ImageView
        android:id="@+id/avatar"
        android:src="@drawable/mainImg"
        android:background="@drawable/backgroundImg"
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:layout_gravity="center"
        android:contentDescription="@string/desc" />

</LinearLayout>

更新2:

以下是三张图片的链接 1)背景 2)主要形象 3)预期结果(带圆角)

ImageShack upload

3 个答案:

答案 0 :(得分:4)

一个简单的解决方案是只使用一个ImageViewandroid:background用于您的image2,您说它是容器,而android:src用于image1,这是实际图像:< / p>

<ImageView
    ...
    android:background="@drawable/image2"
    android:src="@drawable/image1"
    android:padding="2dp" />

只需添加填充,即可指定要在“框架”和实际“图片”之间留出多少空白空间。

答案 1 :(得分:4)

我不得不用app I recently made处理这个问题。请注意,在第一个和第二个屏幕截图中,缩略图是如何构图的。

为了实现这一点,我在FrameLayout中将图像和框架堆叠在一起。首先,我布置实际图像(@ id / thumbnail),然后是框架(@ id / frame)。

需要注意的重要事项是缩略图使用的是scaleType“fitXY”,并且略有边距,因此角落不会在框架的圆角后面伸出。

这仅适用于框架边框不透明的情况,因此您可能必须使框架边缘与背景颜色相同。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="@dimen/thumbnail_size"
    android:layout_height="@dimen/thumbnail_size"
    android:layout_margin="5dp"
    android:gravity="center"
    android:orientation="vertical"
     >

    <ImageView
        android:id="@+id/thumbnail"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:layout_margin="4dp"
        android:scaleType="fitXY" />

    <ImageView
        android:id="@+id/frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/pixel_frame"
        android:scaleType="fitXY" />

</FrameLayout>

答案 2 :(得分:3)

使用ImageButton ..将Background设置为Image1,将Image src设置为Image2

        <ImageButton
            android:id="@+id/imageButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/image2"
            android:src="@drawable/image1" />