ImageButton背景是否可以自行切换? Drawables疯了吗?

时间:2012-01-25 14:56:03

标签: android android-layout android-resources

我遇到的问题是使用与我的某个资源不同的drawable绘制ImageButton背景。我将背景设置为透明,但在某些情况下,它正在拾取我的一个名为bottom_shadow.9.png的drawable。为什么为什么!?这太奇怪了......

之前我见过这个问题...我的一些应用用户抱怨看到这个问题,现在我决心想出来了!看看我现在拥有的东西。任何提示或想法都会有所帮助。

我在values / colors.xml下创建的颜色值:

<color name="transparent">#00000000</color>

我的ImageButton位于layout /:

下的一个xml布局下
<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;
}

这应该是这样的:

enter image description here

这就是我所看到的:

enter image description here

5 个答案:

答案 0 :(得分:2)

我认为你在另一个项目中面临的问题与我相同:在背景上使用透明色#00000000时,Android实际上并不会使其透明,而是使用直接在其下面的元素的背景drawable。

我不确定我刚才说的是清楚但是要检查是否是这样,我找到了一个快速简单的解决方案:不要使用#00000000作为背景透明但任何其他完全透明的颜色:#00FF0000甚至#00F00000应该这样做。

请参阅我在Google跟踪器中提出的问题:http://code.google.com/p/android/issues/detail?id=24653

答案 1 :(得分:2)

答案 2 :(得分:1)

为什么在内置到Android.R.color中时会创建自己的颜色?我会尝试使用:

android:background="@android:color/transparent"

它是否能解决您的问题,更简单,更清洁。

答案 3 :(得分:0)

我认为你想要你的按钮的背景是某种颜色,但你已经分配了src和按钮的颜色(在布局xml中),这意味着按钮可以使用src图片作为背景,不是纯粹的颜色。我不知道我是否说明了这一点。

答案 4 :(得分:0)

为了补充一点,我在透明的ImageButton背景中看到了非常奇怪的周期性显示损坏,因为我在后台选择器中指定项目如下:

<item android:drawable="@android:color/transparent" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>

这个可能似乎偶尔会起作用,但我肯定会遇到ImageButtons会呈现可怕的全白背景而不是漂亮透明背景的情况。

请注意,我将android:drawable语法与颜色资源混合在一起。指定颜色资源的正确方法似乎是android:color =“#FF00FF”属性或使用元素作为item的子元素。我搜索得很久很难,最终找到了这篇文章。