【问题】

ImageButton 无法通过设置 padding 按比例缩小问题,而 ImageView 却可以;

【分析】
  1. 看 ImageButton 的样式定义,其 scaleType 模式默认是 center;
                       name="Widget.ImageButton">                      name="android:focusable">true                      name="android:clickable">true                      name="android:scaleType">center                      name="android:background">@android:drawable/btn_default                                
  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

更多相关文章

  1. 实用代码3
  2. Android下PreferenceScreen 加载流程
  3. android editText 软键盘enter键图标的设置
  4. Android(安卓)使用ActivityOptions实现Activity转场动画
  5. android viewpage的使用
  6. android顶部栏属性ActionBar Options
  7. tabhost的使用
  8. android中menu的使用
  9. Android(安卓)Animation开机动画的优化

随机推荐

  1. Android关机重启实现
  2. input系统一 loop线程的创建与运行
  3. android监听短信
  4. 线性布局的常用属性
  5. Android(安卓)Manifest.xml 分析
  6. 传智播客Android视频教程——第四天
  7. RelativeLayout参数意义
  8. Android(安卓)RatingBar自定义替换系统图
  9. android 字体总结
  10. [1] Android主要源代码组成