2010-06-29 48 views
2

當使用「選擇器」爲不同狀態的按鈕指定不同的圖像時,例如按下,聚焦等,我是否必須爲每個按鈕編寫一個xml文件?我在我的應用程序中有大約15-20個按鈕,所以想知道是否有方法只寫一個xml並引用它的一部分?Android ImageButton選擇器 - 每個按鈕一個xml?

感謝 克里斯

回答

1

沒有辦法指StateListDrawable的部分,至少我所知道的。

但是,由於StateListDrawables通常用於按鈕背景,因此尚不清楚爲什麼首先需要多個按鈕。

+0

因此,例如,我有一個加載按鈕和一個保存按鈕。我想在默認情況下顯示btn_load.png,並在按下或關注時顯示btn_load_click.png。同樣,我想在默認情況下顯示btn_save.png,在按下或關注時顯示btn_save_click.png。我是否需要分別創建load.xml和save.xml,並在loadButton和saveButton中指定它們? – Chris 2010-06-29 18:21:33

1

StateListDrawable根據當前狀態更改Drawable,因爲狀態在運行時發生更改。選擇最初使用的Drawable是您在首先指定Drawable時已經執行的操作。

即使像LevelListDrawable這樣的類仍然要求您指定Drawable的級別,而不是使用Drawable的實際View,AFAIK Android會自動檢查Drawable是否可以處理狀態,並且如果通過它們。 Drawable永遠不會引用正在使用的View的Drawable。

我只是爲每個按鈕創建多個可繪製文件。如果你想分享按鈕的某些屬性,如文字顏色,填充,字體大小等,你應該使用Android樣式。

Android樣式可讓您擁有可以繼承樣式的樣式,如BlueButton,RedButton,GreenButton。所以你可以讓BlueButton設置文本的顏色,文本大小,文本陰影,藍色等的drawable,然後爲Red繼承BlueButton並且只改變Drawable(儘管它可以改變它希望的任何屬性)然後創建另一個樣式,然後只需在您的Button小部件上使用它們即可。您仍然需要爲要鏈接的樣式提供多個可繪製文件,但樣式可以全部位於一個文件中。

相關問題