Android给ImageView添加边框图片

4

在Java中,是否可能以动态方式将位图添加为Android ImageView的边框?

我已经尝试了以下内容:

使用XML中的ImageView和形状作为边框,结果是错误的,我想要在边框中添加位图。

4个回答

2
简单的方法:
为ImageView的属性android:foreground创建一个可绘制的drawable。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">


    <stroke android:width="1px" android:color="#ff0000" />

    <solid android:color="@android:color/transparent"/>

</shape>

然后是XML,
<ImageView
    android:id="@+id/unreserved_head_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:foreground="@drawable/shape_border"
    />

2

您有多种选择:

  1. 在您的ImageView上方添加一个带边框的其他视图(也是ImageView),这可能是最简单的解决方案。只需向xml添加另一个视图并确保它们重叠即可。(例如使用RelativeLayout或FrameLayout作为容器)

  2. 使用层列表,在位图上方绘制一个形状,并将其添加到您的ImageView中

  3. 编写自定义ImageView并使用Canvas在重写的onDraw方法中绘制边框。例如canvas.drawRect(...)非常简单明了。


感谢您的建议...现在请告诉我是否可能(我有一个透明的手机图像,现在我想将其用作简单的图像,使该图像适合该透明部分),以便它看起来像该图像具有手机背景。 https://cdn2.iconfinder.com/data/icons/app-types-in-grey/512/apps_512pxGREY.png - Kinjal Patel
你可以查看这个应用的标志:play.google.com/store/apps/details?id=com.knt - Kinjal Patel
@KinjalPatel 嗯,最简单的解决方案可能是将您手机屏幕的图像透明化,并将其覆盖在所需的背景上。但是有多种方法可以实现这一点。也许您应该尝试您最喜欢的方法,如果遇到问题,请提出新的问题。 - daemmie
你有检查过这个应用的标志吗?https://play.google.com/store/apps/details?id=com.knt - Kinjal Patel

1
最近我发现的最简单的解决方案是,尝试在您的应用程序中使用材料主题。使用"Theme.MaterialComponents.Light",然后在内部使用图像视图和材料卡片视图。
        <com.google.android.material.card.MaterialCardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:cardBackgroundColor="@color/white"
            app:cardCornerRadius="8dp"
            app:cardElevation="0dp"
            app:strokeColor="@color/colorPrimary"
            app:strokeWidth="1dp">
              
              <ImageView/>//define you image view hear
       
        </com.google.android.material.card.MaterialCardView>

使用属性stokeColorstrokeWidth,您可以在图像视图上创建边框并使其动态。

0

在Android Studio中,您可以使用9 patch制作图像边框!

我曾寻找解决方案,但没有找到,所以我跳过了那一部分。

然后我去Firebase资产的Google图片上偶然发现他们使用9patch。

9patch in action

这是链接: https://developer.android.com/studio/write/draw9patch 你只需要拖动边缘位置

就像在Unity中的边框边缘一样简单


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接