在最近的一个工程中,要求有一个在上方了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。这样做后,可以保证背景图片不会再失真了!

Android 中“TabBar”的背景拉伸问题的更多相关文章

  1. android中的selector背景选择器的用法

    关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法. 首先android的selector是在 ...

  2. android中在java代码中设置Button按钮的背景颜色

    android中在java代码中设置Button按钮的背景颜色 1.设置背景图片,图片来源于drawable: flightInfoPanel.setBackgroundDrawable(getRes ...

  3. Android中Selector的用法(改变ListView和Button的默认背景)

    Android中的Selector的用法 http://blog.csdn.net/shakespeare001/article/details/7788400#comments Android中的S ...

  4. Android中selector背景选择器

    http://blog.csdn.net/forsta/article/details/26148403 http://blog.csdn.net/wswqiang/article/details/6 ...

  5. Android中通过xml改变背景及文字颜色

    原创文章,转载请注明出处,谢谢! 本篇主要介绍Android开发中,通过XML资源文件来设置控件在不同状态下的背景及文字颜色.关于xml改变背景及文字颜色的原理,大家可以去看一下郭霖大神的源码分析文章 ...

  6. Android 中常见控件的介绍和使用

    1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...

  7. Android中Drawable分类汇总(上)

    Android把可绘制的对象抽象为Drawable,不同的图形图像资源就代表着不同的drawable类型.Android FrameWork提供了一些具体的Drawable实现,通常在代码中都不会直接 ...

  8. Android中9-Patch图片之理解

    在android中,不仅可以将扩展名为.png,.jpg,.gif的普通图片作为图片资源,而且可以将扩展名为.9.png的9-Patch图片作为图片资源.扩展名为.png,.jpg,.gif的普通图片 ...

  9. Android中各级目录的作用

    Android中各级目录的作用 一.目录结构  src目录---存放源代码文件   gen目录---ADT插件生成的文件,(自动生成) R.java文件  drawable类---给图片生产的ID  ...

随机推荐

  1. 加载数据库驱动程序的方法和JDBC的流程

    加载驱动方法 1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 2. DriverManager.r ...

  2. C语言中常用的string.h的字符函数

    strcmp 字符串比较函数 原型: int strcmp(char *str1, char *str2); 例子: ) printf("buffer 1 is greater than b ...

  3. 什么是谷歌loon计划

    互联网服务已经与人类的生活密不可分,但受地理环境限制,目前全球只有三分之一的幸运儿能够体验到这种服务.为了让更多的人感受互联网,Google推出了一项名为“Project Loon”的计划,利用氢气球 ...

  4. BZOJ-1015 StarWar星球大战 并查集+离线处理

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MB Submit: 4105 Solved: 1826 [Submit ...

  5. BZOJ3626 LCA

    Description 给出一个n个节点的有根树(编号为0到n-1,根节点为0).一个点的深度定义为这个节点到根的距离+1. 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先. ...

  6. SQL多条件查询

    SELECT a.tel,a.business_code,b.name AS business_name,a.register_time FROM T_RED_USER a LEFT JOIN T_P ...

  7. hihocoder #1058 Combination Lock

    传送门 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Finally, you come to the interview room. You know that a ...

  8. 获取IplImage 数据并打印

    int main(int argc, char* argv[]){ IplImage *img=cvLoadImage("c://fruitfs.bmp",1);    CvSca ...

  9. xml 嵌入式资源

    使用Ibatis总是说未能加载相应的sqlmap.xml,原来是 xml以内容方式,而不是嵌入式方式载入Dll中

  10. strstr()

    char * __cdecl strstr ( const char * str1, const char * str2 ) { char *cp = (char *) str1; char *s1, ...