你百度不到的android坑 imageview.setimageDrawable和setbackgroundDrawable

   最近在写一个banner框架遇到的问题 记录一下


ShapeDrawable   generalDrawable = new ShapeDrawable;

generalDrawable.getPaint().setAntiAlias(true);

generalDrawable.getPaint().setStyle(Paint.Style.FILL);

generalDrawable.getPaint().setColor(indicatorUnFocusColor);

image.setImageDrawable(generalDrawable) 这样做的是不能显示的

image.setBackgroundDrawable(generalDrawable) 这样是可以的

查看源码的  imageview 会去获取drawable的getIntrinsicHeight() =-1;

//  源码
d.setVisible(getVisibility() == VISIBLE, true);
d.setLevel(mLevel);
mDrawableWidth = d.getIntrinsicWidth();
mDrawableHeight = d.getIntrinsicHeight();
applyImageTint();
applyColorMod();

当然此时无法显示;

设置宽高就能正常显示了
generalDrawable.setIntrinsicHeight(20);
generalDrawable.setIntrinsicWidth(20);
focusDrawable.setIntrinsicHeight(20);
focusDrawable.setIntrinsicWidth(20);
 
  
而在设置backgrounddrawable时 
 
  
会自动把drawable 放大到 imageview 到width-padding和 height-padding然后去设置
所以是可以设置的。
 
  
 
  
android drawable 博大精深 是androider易于忽略的地方。

你可能感兴趣的:(android,积累,android,提高,drawable,存储)