你百度不到的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易于忽略的地方。
相关文章推荐
- Android中View的滑动冲突——Android开发艺术探索笔记
- fresco 导致的无法加载 so 问题(Android studio)
- Android系统对话框
- Android系统对话框
- android studio .9图片的制作
- Android:实用的Text工具方法
- android 所有焦点问题汇总【Focus】
- [Android] ListView 滚回顶部
- Android ListView异步加载图片乱序问题,原因分析及解决方案(一)
- Android 自定义View (一)
- Android的Launcher启动器中添加快捷方式及小部件实例
- Android内存优化(使用SparseArray和ArrayMap代替HashMap)
- 《Android开发艺术探索》读书笔记——IPC机制
- Android Studio 删除module的方法
- Android中AsyncTask异步任务使用详细实例(一)
- Android中的计时实现
- 4.5.2 非常好的 Good Android 学习之开源项目PullToRefresh的使用
- Android手机自动化测试工具介绍
- Android开发之深入理解NFC(一)
- Android 中使用 AsyncTask 异步读取网络图片