适应Android平台或API级别的布局

Ath*_*heh 38 android android-layout

对于我目前正在开发的应用程序,我需要将不同活动的布局调整为用户的Android API级别.

有没有办法做到这一点?

Jes*_*ess 80

如果您要执行的操作是根据设备上可用的API版本显示不同的布局,则需要使用配置限定符.还记录了替代资源的具体细节.

最基本的方法是为要使用的每个API级别创建一个布局文件夹,格式如下:

res/layout/mylayout.xml       (Default)
res/layout-v4/mylayout.xml    (Android 1.6)
res/layout-v11/mylayout.xml   (Android 3.0)
Run Code Online (Sandbox Code Playgroud)

等等,vNAPI级别在哪里.可以在此页面上找到特定的API级别.

  • @FredericYesidPeñaSánchez它将倒退到下一个最匹配的布局.因此,res/layout将始终匹配,使其成为必需,但任何其他都是可选的.每个平台都不需要一个文件夹,除非你需要在每个平台上都有不同的东西. (7认同)

小智 5

正如 Andrew Koester 所说,您可以使用不同版本的文件夹,但我发现这需要大量工作,因为它不会回退到默认布局。如果你使用 layout-v14,它会工作,但任何 14 之后的 api 也会有这个布局,你必须使用另一个 layout-v?再次覆盖它。这完全取决于你在做什么,但我发现如果你以编程方式做很多事情,这会产生奇迹:

if(Build.VERSION.SDK_INT == Build.VERSION_CODES.ICE_CREAM_SANDWICH || Build.VERSION.SDK_INT == Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1){
            //ex. if ics is met then do this

        }else{
            //if api is not ics then do this
        }
Run Code Online (Sandbox Code Playgroud)