2012-01-25 25 views
1

我遇到了一個問題,ImageButton背景是使用與我的某個資源不同的drawable繪製的。我將背景設置爲透明,但在某些情況下,它將拾取一個名爲bottom_shadow.9.png的drawable。爲什麼爲什麼!?這很奇怪...ImageButton背景是自己開發的嗎? Drawables wild wild?

我以前見過這個問題...我的一些應用用戶抱怨看到這個問題,現在我決定解決這個問題!看看我現在有什麼。任何提示或想法都會有所幫助。

我下值/ colors.xml創建的顏色值:

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

我在佈局下一個我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; 
} 

這是它應該是什麼樣子:

enter image description here

這是我所看到的:

enter image description here

+0

有時Eclipse中的某些內容出錯,我在應用程序的錯誤位置看到了錯誤的資源。在這些情況下,清理項目對我有幫助(項目 - >清潔)。 –

+0

感謝您的評論。我注意到,乾淨的幫助。這個問題有點糟糕......有時候沒有辦法重現它,而不是在某個電話上發生問題...... – Jona

回答

0

我想你想你的按鈕的背景是某種顏色,但你已經分配既是src和顏色的該按鈕(在佈局xml中),這意味着該按鈕可以使用src圖片作爲背景,而不是純色。我不知道我是否明確了這一點。

+0

我不確定我是否理解你寫的內容......但是聲明一個src和背景是有效使用ImageButton。我沒有看到Android API上的任何地方關於不使用顏色資源和可繪製資源。 – Jona

2

我認爲你在另一個項目上面臨同樣的問題:當在背景上使用透明顏色#00000000時,Android實際上不會使其透明,而是直接在它下面使用背景可繪製元素。

不知道我剛剛說的是什麼,但要檢查是否是這樣,我發現一個快速簡單的解決方案:不要使用#00000000作爲背景透明,但其他任何完全透明的顏色:#00FF0000或即使#00F00000也應該這樣做。

見我在谷歌跟蹤器提出了這個問題:http://code.google.com/p/android/issues/detail?id=24653

+0

感謝您的回答!我明白你說的透明價值全零。我想知道Android是否也有挑選不僅僅是直接背景下的背景,而是挑選一個隨機drawable。在我的情況下,這是一個隨機的drawable,甚至沒有用在這個特定的片段上。 – Jona

1

你爲什麼要創建自己的顏色,當它建成Android.R.color?我會嘗試使用:

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

無論它是否解決了您的問題,它更簡單,更清潔。

+0

感謝您的反饋...但是,無論使用什麼顏色都無所謂,問題仍然會發生。 – Jona

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」屬性或作爲使用元素的項目的子元素。我搜索了很長時間,並且最終找到了這篇文章。