你百度不到的android坑 imageview.setimageDrawable和setbackgroundDrawable
16lz
2021-01-23
最近在写一个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中Handler源码的分析文章
- 【小超_Android】2015最流行的android组件、工具、框架大全(后续)
- Android中ButterKnife框架
- android camera 源码分析
- Android的pagerAdapter源码,在线查看网址。