給Android按鈕添加圖標

之前的項目好不容易搞定,現在boss讓我幫忙做另外一個項目App的界面美化,我瞬間傻眼。我之前沒接觸過Android,怎麼整?BOSS說要給按鈕上添加圖標,好不容易搭建好環境,打開項目,要添加圖標的時候傻眼了,因爲Android的按鈕添加圖標不像Swing那樣傳個參數進去就可以了,儘管就個ImageButton類,但是這個類指定了圖片之後就顯示圖片了,也就是說,他是將圖片作爲一個按鈕來顯示的。但是我的這個是文字和圖標都需要的。那怎麼加呢?

第一次上網查的時候,查到的結果說要自己重新寫一個按鈕的類。要是這樣的話那工程量就太巨大了。後來靈機一動,想到因爲Android界面是靠XML配置的,XML也支持HTML的語法,那我用background行不行呢?上網再次查詢,發現果然有這個屬性。於是我興致勃勃的找到這個屬性的用法之後添加上去,頓時傻眼。因爲他把圖片整個作爲按鈕的背景來顯示,有圖片直接被拉伸了不說,文字覆蓋在圖片上根本看不了。css裏面可以通過截取的方式改變圖片顯示的區域和位置,但是這個配置文件裏面顯然不可能寫CSS。我又上網找了半天,結果沒發現類似的配置屬性。看來這條路還是走不通。

終於在我一籌莫展的時候,偶然發現按鈕類(Button)有另外一個屬性的:

android:drawableTop="@drawbale/iconid"
android:drawableBottom="@drawbale/iconid"
android:drawableLeft="@drawbale/iconid"
android:drawableRight="@drawbale/iconid"

這四個屬性分別是在按鈕的上下左右添加圖標。只要將圖標放在項目的Drawable目錄下R文件就自動在drawable類裏生成這個圖標名的ID。比如放一張image.jpg的圖標進去,要在按鈕的左邊顯示,那麼只需要給這個按鈕添加屬性

adnroid:drawableLeft="@drawable/image"

就可以了。但是需要注意的是:圖標的名字只能小寫+數字([a-z][0-9]),不能使用其他字符,連英文大寫都不行。這點有點鬱悶。不知道是什麼原因。因爲還有其他事情要做,所以我沒有深究。

加上上面那行代碼之後,圖標就可以在按鈕上顯示出來了。但是等等,還沒完。如果按鈕比較長而文字內容比較少的話,會出現圖標在按鈕最左邊而文字在中間的情況,圖標和文字之間有很大的空白。這個時候有兩種方法處理:第一種就是改變按鈕的長度。將按鈕的width設置爲wrap_content。如果爲了美觀不能改變按鈕的長度的話,我經過研究,發現設置按鈕的padding也可以。設置了padding之後,圖標也會隨之往反方向移動。如:

android:paddingLeft="50sp"
這個屬性是左邊的內邊距爲50sp,熟悉CSS的人不難理解這個屬性。這樣圖標就會像右移動50sp的距離了。(關於sp、dp、px的區別請自行在網上搜索)
只要設置合適的數值,按鈕就能比較完美的顯示出來了。之所以是“比較”完美,因爲我發現如果按鈕的width屬性爲fill_parent的話,那第二個方式還是無法在各個分辨率上完美顯示。最好還是給按鈕的width設置爲wrap_content或者設置一個具體的寬度,第二種方法才比較好用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章