【Android】android:padding屬性設定對ImageButton無效問題
阿新 • • 發佈:2019-01-06
【問題】
ImageButton 無法通過設定 padding 按比例縮小問題,而 ImageView 卻可以;
【分析】
- 看 ImageButton 的樣式定義,其 scaleType 模式預設是 center;
<stylename="Widget.ImageButton">
<itemname="android:focusable">true</item>
<itemname="android:clickable">true</item>
<itemname="android:scaleType">center</item>
<itemname="android:background">@android:drawable/btn_default</item>
</style>
-
檢視 scaleType 的作用:
http://blog.csdn.net/larryl2003/article/details/6919513
http://developer.android.com/reference/android/widget/ImageView.ScaleType.html
scaleType 有如下模式:CENTER,CENTER_CROP,CENTER_INSIDE,FIT_CENTER,FIT_START,FIT_END,FIT_XY -
據第2點發現,ImageView 的顯示方式和 scaleType 有關,而 ImageButton 繼承於 ImageView,所以顯示方式也得受控於 scaleType;
-
ImageView 的預設 scaleType 是
fitCenter
, 所以可以通過 padding 自動縮放;(這也是為什麼設定了大於小圖片size的 layout_width 和 layout_height 後,小圖片會拉伸的原因了,如果給 ImageView 設定android:scaleType="center"
, 那麼圖片就會按照原大小顯示出來,無論padding怎樣改變都不會有影響;)
【解決方案】
重新定義 scaleType:android:scaleType="fitCenter"
,然後再使用 padding 就能控制 ImageButton
的留白了;
【參考資料】
- android中ImageView、ImageButton、Button 之間的區別;
http://blog.csdn.net/sheeprunning/article/details/9092749
- Padding not working on ImageButton
http://stackoverflow.com/questions/20545742/padding-not-working-on-imagebutton