您的位置:首页 > 移动开发 > Android开发

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

2016-02-29 16:52 435 查看
最近在写一个banner框架遇到的问题 记录一下ShapeDrawable generalDrawable = new ShapeDrawable;generalDrawable.getPaint().setAntiAlias(true);
generalDrawable.getPaint().setStyle(Paint.Style.FILL);

generalDrawable.getPaint().setColor(indicatorUnFocusColor);

image.setImageDrawable([b]generalDrawable) 这样做的是不能显示的[/b]
image.setBackgroundDrawable([b]generalDrawable) 这样是可以的[/b]
查看源码的  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易于忽略的地方。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: