SeeKBar 背景图片偏移的问题
来源:互联网 发布:网络机顶盒系统崩溃了 编辑:程序博客网 时间:2024/06/05 09:56
发现Seekbar背景图片没有按当初设计的那样铺满背景。
网上很少相关资料,自己测试发现ProgressBar没有这个问题,并且与属性maxHeight有关系。maxHeight>=thunb的高度时正常。
查看源码发现Seekbar继承的类AbsSeekBar类下面有个函数updateThumbPos
private void updateThumbPos(int w, int h) { Drawable d = getCurrentDrawable(); Drawable thumb = mThumb; int thumbHeight = thumb == null ? 0 : thumb.getIntrinsicHeight(); // The max height does not incorporate padding, whereas the height // parameter does int trackHeight = Math.min(mMaxHeight, h - mPaddingTop - mPaddingBottom); int max = getMax(); float scale = max > 0 ? (float) getProgress() / (float) max : 0; if (thumbHeight > trackHeight) { if (thumb != null) { setThumbPos(w, thumb, scale, 0); } int gapForCenteringTrack = (thumbHeight - trackHeight) / 2; if (d != null) { // Canvas will be translated by the padding, so 0,0 is where we start drawing d.setBounds(0, gapForCenteringTrack, w - mPaddingRight - mPaddingLeft, h - mPaddingBottom - gapForCenteringTrack - mPaddingTop); } } else { if (d != null) { // Canvas will be translated by the padding, so 0,0 is where we start drawing d.setBounds(0, 0, w - mPaddingRight - mPaddingLeft, h - mPaddingBottom - mPaddingTop); } int gap = (trackHeight - thumbHeight) / 2; if (thumb != null) { setThumbPos(w, thumb, scale, gap); } } }
int trackHeight = Math.min(mMaxHeight, h - mPaddingTop - mPaddingBottom);这里得到了滑动轨道的高度与maxHeight属性相关联。
if (thumbHeight > trackHeight) 这个判断就决定了是否对背景图片进行移动。最终调用setBounds影响了图片。
总结,使用SeekBar自定义图片时最好把thumb的高度和progressDrawable高度一致,同时高度小于maxHeight。就可以显示你想要的效果了。
0 0
- SeeKBar 背景图片偏移的问题
- 偏移量的问题
- SeekBar进度条背景图片和按钮图标的动态切换
- 关于seekbar的一些问题
- listview+seekbar问题的解决
- css 背景图片的问题
- 关于偏移地址的问题
- 关于内存偏移的问题
- 一个指针偏移的问题
- UIScrollView内容偏移的问题
- 关于自定义SeekBar写法以及seekbar不显示的问题
- android listview 背景图片的问题
- 窗口背景图片的设置问题
- 关于UIView的背景图片问题
- 记录一下seekbar遇到的问题
- 关于seekBar的一些小问题
- Android SeekBar 原点偏上的问题
- SeekBar与MediaPlayer(生命周期)的seekTo()问题
- 装饰器模式浅谈
- 动态申请空间malloc
- 第二周 项目四 图书馆的书
- MongoDB 导入与导出
- js制作动态创建table行与修改等编辑表单功能特效
- SeeKBar 背景图片偏移的问题
- 数据挖掘常用算法简介
- Linux下JLink提示clone,插上JLink后会掉固件
- 第三周项目四
- 解决Unable to find vcvarsall.bat的办法
- cocos2d-x + Lua初始环境下的_G全局变量内容
- Surface、SurfaceView和SurfaceHolder的理解
- iphone移动卡手动开启个人热点的方法(适用于IOS6不需要越狱)
- c语言中swap问题小结