最近在写一个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易于忽略的地方。