1. 程式人生 > >【Android】android:padding屬性設定對ImageButton無效問題

【Android】android:padding屬性設定對ImageButton無效問題

【問題】

ImageButton 無法通過設定 padding 按比例縮小問題,而 ImageView 卻可以;

【分析】
  1. 看 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>
  2. 檢視 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

  3. 據第2點發現,ImageView 的顯示方式和 scaleType 有關,而 ImageButton 繼承於 ImageView,所以顯示方式也得受控於 scaleType;

  4. ImageView 的預設 scaleType 是 fitCenter, 所以可以通過 padding 自動縮放;(這也是為什麼設定了大於小圖片size的 layout_width 和 layout_height 後,小圖片會拉伸的原因了,如果給 ImageView 設定 android:scaleType="center", 那麼圖片就會按照原大小顯示出來,無論padding怎樣改變都不會有影響;)

【解決方案】

重新定義 scaleType:android:scaleType="fitCenter",然後再使用 padding 就能控制 ImageButton 的留白了;

【參考資料】
  1. android中ImageView、ImageButton、Button 之間的區別;http://blog.csdn.net/sheeprunning/article/details/9092749
  2. Padding not working on ImageButton http://stackoverflow.com/questions/20545742/padding-not-working-on-imagebutton