4

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

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

基本上我希望图像 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 上传

4

3 回答 3

4

一个简单的解决方案是只为你的 image2 使用一个ImageViewwith android:background,你说它是容器,而android:src对于 image1,它是实际的图像:

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

只需添加一个填充,以指定您希望在“框架”和实际“图片”之间留下多少空白空间。

于 2012-06-21T07:29:12.207 回答
4

我不得不用我最近制作的一个应用程序来处理这个问题。请注意,在第一个和第二个屏幕截图中,缩略图都是加框的。

为此,我将图像和框架堆叠在 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>
于 2012-06-21T10:07:35.530 回答
3

使用 ImageButton.. 将背景设置为 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" />
于 2012-06-21T07:30:27.650 回答