【发布时间】:2016-03-20 00:32:16
【问题描述】:
是否可以在Java中动态添加位图作为Android中ImageView的边框?
我已经尝试了以下方法:
XML 中的图像视图和边框作为形状结果错误我想在边框中添加位图。
【问题讨论】:
是否可以在Java中动态添加位图作为Android中ImageView的边框?
我已经尝试了以下方法:
XML 中的图像视图和边框作为形状结果错误我想在边框中添加位图。
【问题讨论】:
您有多种选择:
在您的 Imageview 上方放置另一个带有边框的 View(也是 imageview)。 Thay 可能是最简单的解决方案。只需向您的 xml 添加另一个视图并确保它们重叠。 (例如使用 Relative 或 FrameLayout 作为容器)
使用Layer List 并在位图上方绘制一个形状并将其添加到您的 ImageView
写一个自定义的ImageView,使用Canvas在覆盖的onDraw方法中绘制Border。例如。 canvas.drawRect(...) 非常简单。
【讨论】:
简单的方法:
ImageView 的 drawable 属性 android:foreground
<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"
/>
【讨论】:
我最近找到的最简单的解决方案。
尝试在您的应用程序中使用材料主题。使用"Theme.MaterialComponents.Light"
然后使用里面的image view和material card view。
<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>
使用属性stokeColor 和strokeWidth,您可以在图像视图上设置边框并使其动态化。
【讨论】:
你可以在andorid studio中使用9个补丁来为图片做边框!
我正在寻找解决方案,但我没有找到任何解决方案,所以我跳过了那部分
然后我去谷歌的firebase资产图片,我偶然发现他们使用9patch
这是链接:https://developer.android.com/studio/write/draw9patch 您只需要拖动边缘所在的位置
它就像统一的边界边缘
【讨论】: