【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android CheckBox中設(shè)置padding無(wú)效解決辦法_第1頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android CheckBox中設(shè)置padding無(wú)效解決辦法_第2頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android CheckBox中設(shè)置padding無(wú)效解決辦法_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】AndroidCheckBox中設(shè)置padding無(wú)效解決辦法

AndroidCheckBox中設(shè)置padding無(wú)效解決辦法CheckBox使用本地圖片資源CheckBox是Android中用的比較多的一個(gè)控件,不過(guò)它自帶的button樣式比較丑,通常都會(huì)替換成本地的資源圖片。使用本地資源圖片很簡(jiǎn)單,設(shè)置android:button屬性為一個(gè)自定義的包含selector的drawable文件即可。例如android:button=”@drawable/radio_style”。radio_style.xml定義如下。checked和unchecked分別是選中和未選中時(shí)使用的圖片資源。CheckBox點(diǎn)擊響應(yīng)問(wèn)題當(dāng)CheckBox使用本地的圖片資源后,如果本地圖片很?。▓D片大小需要和布局搭配,很多時(shí)候?yàn)榱私缑娴拿烙^不能使用太大的圖片),而且右側(cè)沒(méi)有文字時(shí),會(huì)導(dǎo)致CheckBox很難被點(diǎn)中。增加點(diǎn)擊區(qū)域,通常的做法是增加padding值,擴(kuò)大控件的外部范圍。我們希望可以通過(guò)設(shè)置CheckBox的padding值,讓圖片的上下左右四個(gè)方向都增加一定的范圍,這樣用戶點(diǎn)擊圖片的響應(yīng)上就不會(huì)有問(wèn)題了。CheckBoxpadding失效問(wèn)題CheckBox分別設(shè)置上、下、左、右和全部四個(gè)方向各20dp的padding后實(shí)際顯示效果如圖所示。這里為了看得清楚,為CheckBox設(shè)置了背景色,并且添加了文字。

從圖示可以看出,CheckBox設(shè)置padding值影響的是實(shí)際上文字到CheckBox邊界的距離,圖片始終在左側(cè)垂直居中的位置。

先看上下padding,當(dāng)設(shè)置上下padding時(shí),由于文字本身距離上下邊界就有一定的距離,如果padding值設(shè)置的不夠,整個(gè)CheckBox區(qū)域根本不會(huì)變化,通過(guò)設(shè)置較大的padding值可以實(shí)現(xiàn)擴(kuò)大CheckBox上下區(qū)域的目的。最后一張圖上下各20dp的padding,這時(shí)可以看到CheckBox高度增加了。但由于中間文字距離上下邊界的距離和CheckBox圖片高度,文字字號(hào),文字內(nèi)部padding等很多因素有關(guān),很難通過(guò)對(duì)上下padding設(shè)置精確控制CheckBox區(qū)域,很可能出現(xiàn)在這個(gè)手機(jī)上高度被拉的很大,而另一個(gè)手機(jī)上根本沒(méi)有效果。

再看左右padding,當(dāng)設(shè)置左右padding時(shí),無(wú)論是左padding還是右padding,影響的只是文字的位置。圖片始終都在整個(gè)CheckBox的左側(cè),對(duì)圖片來(lái)說(shuō),增大的都是右側(cè)區(qū)域。所以設(shè)置的左右padding不能解決CheckBox點(diǎn)擊響應(yīng)的問(wèn)題,不僅會(huì)導(dǎo)致圖片位置偏左,還會(huì)出現(xiàn)點(diǎn)擊左側(cè)區(qū)域無(wú)法點(diǎn)中的情況。

標(biāo)題中所說(shuō)的padding無(wú)效問(wèn)題,實(shí)際上是有效的,只是設(shè)置paddingLeft增加的是右邊區(qū)域,paddingTop和paddingBottom只有設(shè)置較大的值才能看到效果。CheckBoxpadding失效問(wèn)題原因要想知道CheckBoxpadding失效問(wèn)題原因,得要查看Android源碼,CheckBox是繼承自CompoundButton,CheckBox左側(cè)的圖片是在CompoundButton的onDraw()方法中繪制的,onDraw()方法代碼如下,mButtonDrawable就是要繪制的圖片對(duì)應(yīng)的Drawable對(duì)象,可以看到left始終為0,而top位置和Grivity有關(guān)(上述例子中Gravity是居中的)。解決CheckBox點(diǎn)擊響應(yīng)問(wèn)題由于CheckBox和CompoundButton沒(méi)有提供任何方法設(shè)置圖片的位置,要想解決CheckBox點(diǎn)擊響應(yīng)的問(wèn)題似乎唯一的方法就是重寫(xiě)一個(gè)新的控件,然后在onDraw方法中確定圖片位置時(shí)把padding也考慮進(jìn)去。不過(guò)這樣做實(shí)在是太麻煩了。

這里給出另外一種簡(jiǎn)單的方法,那就是將圖片擴(kuò)大。CheckBox點(diǎn)擊響應(yīng)問(wèn)題本身是由于圖片過(guò)小,如果將圖片擴(kuò)大就不存在這個(gè)問(wèn)題了,但前面說(shuō)之所以用小的圖片是為了布局搭配和界面美觀,如果將圖片擴(kuò)大不是又回到最開(kāi)始的問(wèn)題了嗎!

其實(shí)這里說(shuō)的圖片擴(kuò)大,不是將圖片整體放大,而是圖片內(nèi)容不變,在原先的圖片外圍增加透明像素,由于透明像素不可見(jiàn),圖片看起來(lái)的實(shí)際大小仍然和以前一樣,但由于透明像素的存在,CheckBox的區(qū)域也會(huì)隨之增大。

要在圖片外網(wǎng)增加透明像素前提是圖片必須是png格式的,不過(guò)這并不是問(wèn)題,通常資源文件都是png格式的,即使不是png格式的圖片,也可以先轉(zhuǎn)換成png格式,然后再增加透明像素。

增加透明像

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論