最近在使用TableLayout时发现一个现象,同样的代码,使用eclipse编译出的apk和把代码放入android代码树中编译出的apk,竟然界面不一样...显示如下:
eclipse 编译出的界面:
放入package/apps/ 中编译出apk的界面:
从上面2图可以看出有几处不同,app title样式不同,TableLayout样式不同,Button样式不同,背景颜色不同。
可以看到android源码树中编译出来的界面中有些Button都越界了,而eclipse编译出的那种效果是我想要的。
为什么同样的代码,界面差异这么大,最后发现和PLATFORM_SDK_VERSION有关。
当时在eclipse中建立AVD时,选择的API LEVEL是10,PLATFORM为android 2.3.3,所以各控件为2.3的样式。
当把源码放入package/apps/中编译时,如果没有在Android.mk 中指定android:targetSdkVersion时,默认使用build/core/version_defaults.mk中PLATFORM_SDK_VERSION := xx 指定的SDK VERSION为xx,这个VERSION和eclipse中的API LEVEL应该是对应的,这边PLATFORM_SDK_VERSION := 15,所以默认样式使用的是android 4.0的。
如果要强制使用2.3的样式,可以在app的Android.mk加入
<uses-sdk android:targetSdkVersion="10" />
至于4.0的TableLayout为什么会比较凌乱需要再研究一下。