ImageButton 背景自行切换?绘图变得疯狂?
我遇到一个问题,即 ImageButton 背景是使用与我的资源之一不同的可绘制对象绘制的。我将背景设置为透明,但在某些情况下,它会拾取我的一个名为 Bottom_shadow.9.png 的可绘制对象。为什么为什么!?这太奇怪了...
我以前见过这个问题...我的一些应用程序用户抱怨看到这个问题,现在我决心解决这个问题!看看下面我目前拥有的。任何提示或想法都会有帮助。
我在values/colors.xml下创建的颜色值:
<color name="transparent">#00000000</color>
在layout/下我的一个xml布局下的我的ImageButton:
<ImageButton
android:id="@+id/ibHelp"
android:layout_width="wrap_content"
android:layout_height="@dimen/settings_list_item_height"
android:background="@color/transparent"
android:contentDescription="@string/content_desc_more_information"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:scaleType="centerInside"
android:src="@drawable/btn_help" />
这是我在生成的R.java文件上看到的:
public static final class drawable {
public static final int bottom_shadow=0x7f020000;
}
public static final class color {
public static final int transparent=0x7f080009;
}
这就是它应该看起来的样子:
这是我所看到的:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
可能与这个问题有关吗?
http://code.google.com/p/android/issues/detail ?id=20283
Could it be related to this issue?
http://code.google.com/p/android/issues/detail?id=20283
我认为您在另一个项目中面临着与我相同的问题:当在背景上使用透明颜色 #00000000 时,Android 实际上不会使其透明,而是使用直接在其下方的元素的背景可绘制元素。
不确定我刚才所说的是否清楚,但为了检查是否是这样,我找到了一个快速且简单的解决方案:不要使用 #00000000 作为背景透明,但任何其他完全透明的颜色:#00FF0000 甚至 #00F00000 应该做吧。
请参阅我在 Google Tracker 中提出的问题:http://code.google。 com/p/android/issues/detail?id=24653
I think you are facing the same issue as I on another project : When using the transparent color #00000000 on a background, Android will not actually make it transparent but instead use the background drawable of the element directly under it.
Not sure what I've just said is clear but to check if this is it, I found a quick and easy solutions : Don't use #00000000 as your background transparent but any other completely transparent color : #00FF0000 or even #00F00000 should do it.
See the issue I raised in Google tracker : http://code.google.com/p/android/issues/detail?id=24653
当 Android.R.color 内置颜色时,为什么要创建自己的颜色?我会尝试使用:
无论它是否解决了您的问题,它都更简单、更干净。
Why are you creating your own color when it's built into Android.R.color? I would try using:
Whether or not it fixes your problem, it's simpler and cleaner.
我想你希望按钮的背景是某种颜色,但是你已经指定了按钮的 src 和颜色(在布局 xml 中),这意味着按钮可以使用 src 图片作为背景,而不是纯色。我不知道我是否说清楚了。
I think you wanna your button's background to be some kind of color, but you have assigned both a src and a color of the button(in the layout xml), which means that the button may use the src picture as the background, not a pure color. I don't know if I made the point.
除此之外,我在透明 ImageButton 背景中看到了非常奇怪的周期性显示损坏,因为我在背景选择器中指定了项目,如下所示:
这可能似乎偶尔会起作用,但我确实有图像按钮将呈现可怕的全白背景而不是漂亮的透明背景的情况。
请注意,我将 android:drawable 语法与颜色资源混合在一起。指定颜色资源的正确方法似乎是 android:color="#FF00FF" 属性或使用元素作为 item 的子元素。我苦苦寻找了很久,终于找到了这篇文章。
Just to add to this, I was seeing really strange periodic display corruption in my transparent ImageButton background because I was specifying the items in my background selector as follows:
This might seem to work occasionally, but I definitely had cases where the ImageButtons would render with a ghastly all-white background instead of the nice transparent background.
Note that I was mixing up the android:drawable syntax with a color resource. The correct way to specify a color resource seems to be either an android:color="#FF00FF" attribute or as a child element of item using a element. I searched long and hard, and eventually found this post.