我有一个ImageView
,它的alpha在XML中设置为0。XML看起来像这样:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="<height>"
android:orientation="horizontal">
<ImageView
android:id="@+id/<id>"
android:layout_width="<width>"
android:layout_height="wrap_content"
android:layout_weight="1"
android:alpha="0"
android:background="#ff00ff"
android:clickable="true"
android:focusable="true"
app:srcCompat="@drawable/<drawable>" />
<ImageView
android:id="@+id/<id>"
android:layout_width="<width>"
android:layout_height="wrap_content"
android:layout_weight="1"
android:alpha="0"
android:background="#0000ff"
android:clickable="true"
android:focusable="true"
app:srcCompat="@drawable/<drawable>" />
</LinearLayout>
我试着搜索如何做到这一点,但大多数问题都是关于如何隐藏背景或整个ImageView
,而不仅仅是背景。此外,alpha
必须设置为"0"
。有没有什么方法可以只隐藏图像,这样就只有background
(纯色)是可见的?只有ImageView
的background
颜色必须显示,所以容器(LinearLayout
)的background
不能同时显示(背景颜色不同)。
将图像的源更改为纯色图像,与背景颜色相同,可以工作,但我需要以编程方式更改此颜色,因此可能效率低下。我还尝试了ImageView.
-setAlpha(float)
,setImageAlpha(int)
,setImageResource(int)
(到0
)和setImageDrawable(Drawable)
(再次显示图像,背景[颜色])的不同组合,但它们产生奇怪的结果。使用setImageResource(0)
(使用alpha 1f
)隐藏图像,仅显示纯色背景,但我无法再次显示图像。有什么简单的方法我不知道吗?
我需要以编程方式完成这项工作,因此像Java android Linearlayout set two colors中的方法将无法工作。什么是最好的方式来做到这一点编程?
2条答案
按热度按时间kxxlusnw1#
Imageview可以显示一个位图,正如你所知道的。可以通过删除相关位图的背景来设置位图。
主要对象
监听器
yc0p9oo02#
但是,不可能直接像预期的那样使用两个视图,正如您所说的,您有多个这样的视图&这就是为什么它不是内存有效的。
但是我们可以使用根据我们的需要设计的**
CustomView
**来实现该功能。**如果你知道一点
drawing on the canvas
以及它是如何工作的,那么它会更容易。在这里,我制作了自定义视图,以实现您想要的效果。
只需将此视图放入您的XML中&然后您就可以通过编程方式传递背景的位图和alpha。
支持单独设置图片alpha、背景alpha以及背景色。
以下是您需要做的:
在xml中,
在活动或片段中,
你得到了它。:)