今天在寫一個(gè)頁面的時(shí)候,因?yàn)橐虞d的圖片是一張長圖片沽损,所以外層用scrollview包裹,但是在真機(jī)上運(yùn)行后,imageview的頭部和底部都有一條空白循头,在stackoverflow上找到兩種解決方案绵估。
1.在imageview中將adjustViewBounds屬性設(shè)置為true
在google開發(fā)文檔中是這樣描述的意思就是炎疆,如果你希望imageview保持drawable一樣的寬高比,就將adjustViewBounds設(shè)值為true壹士。這個(gè)方法親測有效磷雇。
2.在scrollview的跟布局設(shè)置fillViewport屬性為true
同樣偿警,看看文檔中是怎么描述的大概就是躏救,是否擴(kuò)展scrollview的內(nèi)容以填充視圖。這個(gè)方法反復(fù)試了好幾次都沒有什么用螟蒸。
所以最后采取了第一種方案盒使。
XML定義里的android:adjustViewBounds="true"會將這個(gè)ImageView的scaleType設(shè)為fitCenter。不過這個(gè)fitCenter會被后面定義的scaleType屬性覆蓋(如果定義了的話)七嫌,除非在Java代碼里再次顯示調(diào)用setAdjustViewBounds(true)少办。
如果設(shè)置的layout_width與layout_height都是定值,那么設(shè)置adjustViewBounds是沒有效果的诵原,ImageView將始終是設(shè)定的定值的寬高英妓。
如果設(shè)置的layout_width與layout_height都是wrap_content,那么設(shè)置adjustViewBounds是沒有意義的,因?yàn)镮mageView將始終與圖片擁有相同的寬高比(但是并不是相同的寬高值绍赛,通常都會放大一些)蔓纠。
如果兩者中一個(gè)是定值,一個(gè)是wrap_content吗蚌,比如layout_width="100px",layout_height="wrap_content"時(shí)腿倚,ImageView的寬將始終是100px,而高則分兩種情況:
(1)當(dāng)圖片的寬小于100px時(shí)蚯妇,layout_height將與圖片的高相同敷燎,即圖片不會縮放,完整顯示在ImageView中箩言,ImageView高度與圖片實(shí)際高度相同硬贯。圖片沒有占滿ImageView,ImageView中有空白陨收。
(2)當(dāng)圖片的寬大于等于100px時(shí)澄成,此時(shí)ImageView將與圖片擁有相同的寬高比,因此ImageView的layout_height值為:100除以圖片的寬高比畏吓。比如圖片是500X500的墨状,那么layout_height是100。圖片將保持寬高比縮放菲饼,完整顯示在ImageView中肾砂,并且完全占滿ImageView。
希望對你有所幫助宏悦!