Android 中“TabBar”的背景拉伸问题
在最近的一个工程中,要求有一个在上方了tabbar,上面有并排的3个方形按钮,每个按钮都有背景图。问题来了,如何让图片在不同尺寸的屏幕上不失真呢?(由于我们的项目比较小,工时很短,不能为每一个屏幕尺寸单独制作图片,所以我们所有屏幕上只用一套图片。)一开始我们使用了weight这个属性,让整个tabbar的weight恒定,这样做的话,的确可以达到动态调整tabbar高度的效果,但是由于每个屏幕的宽高比不同,这样的固定weight的tabbar中的背景图也有一定的失真现象。后来,我们使用了.9图片,这种方法图片自然是不失真了,但是有效的图片(就是指真正想展示的,那部分不缩放的图片)的大小却无法调整了,效果就是,小屏幕上有效图片看起来太大了,而大屏幕上的又看起来太小了!最后,用了一下方法,用代码来确定tabbar的高度。代码如下:
private void setTopViewHeight()
{
//set top view height
WindowManager manager = (WindowManager)this.getSystemService(Context.WINDOW_SERVICE);
Point sizePoint = new Point();
manager.getDefaultDisplay().getSize(sizePoint);
double m = 0.275;
View topView = contentView.findViewById(R.id.add_treatment_top);
ViewGroup.LayoutParams params = topView.getLayoutParams();
double x = ((double)sizePoint.x)/3.0;
params.height = (int)(x*m);
topView.setLayoutParams(params);
}
其中的m,是真实的背景图的长宽比,而((double)sizePoint.x)/3.0;这里的3.0 是因为横着放了3个button。这样做后,可以保证背景图片不会再失真了!
最新文章
- JSWindow对象
- 为什么C#中应该用Try-Catch?
- RxJava 的使用入门
- MyEclipse无法启动调试:Cannot connect to VM
- 基于HTML5的可预览多图片Ajax上传
- flex编译命令相关
- 【转】正确理解PHP程序编译时的错误信息
- IIS配置不正确可能导致“远程服务器返回错误: (404) 未找到";错误一例。
- 【剑指offer】数字数组中只出现一次(2)
- C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识)
- java中自动装箱带来的性能问题
- Spring Security 入门(1-4-2)Spring Security - 认证过程之AuthenticationProvider的扩展补充说明
- 记一次非常规方法对接硬件设备(Grason Stadler GSI 61)
- 酒店管理系统ER图
- Asp.Net Nuget常用命令
- Android应用系列:手把手教你做一个小米通讯录(附图附源码)
- js正则表达式中的
- sklearn获得某个参数的不同取值在训练集和测试集上的表现的曲线刻画
- WPF Image Source 设置相对路径图片
- iOS入门怎样选择Swift和objective-c
热门文章
- 【poj2079】 Triangle
- BZOJ1816 [Cqoi2010]扑克牌
- TYVJP1933 绿豆蛙的归宿
- linux内核数据结构学习总结
- 看看这些JavaScript题目你会做吗?
- tcp 重发 应用层重传
- xss概念剖析
- iOS-Auto property synthesis will not synthesize property 'delegate'; it will be implemented by its super
- Tools下的mdscongiguer 文件中 43行 oracle 配置 发现需要连接库 -lclntsh libclntsh.so 库是个什么东西呢?
- 3月20,html