Подтвердить что ты не робот

Адаптировать макет к платформе Android или API

Для приложения, которое я сейчас разрабатываю, мне нужно адаптировать макет различных действий к пользовательскому уровню API Android.

Есть ли способ сделать это?

4b9b3361

Ответ 1

Если то, что вы пытаетесь сделать, это показать другой макет, в зависимости от того, какая версия API доступна на устройстве, вы хотите использовать квалификаторы конфигурации. Специфика для альтернативных ресурсов также документирована.

Самый простой способ сделать это - создать папку макета для каждого уровня API, который вы хотите использовать, отформатирован следующим образом:

res/layout/mylayout.xml       (Default)
res/layout-v4/mylayout.xml    (Android 1.6)
res/layout-v11/mylayout.xml   (Android 3.0)

и т.д., где vN - уровень API. Конкретные уровни API можно найти на этой странице.

Ответ 2

Как сказал Andrew Koester, вы можете использовать разные папки версий, но я нашел, что это большая работа, потому что она не вернется к макету по умолчанию. Если вы использовали layout-v14, он будет работать, но любой api после 14 также будет иметь этот макет, и вы должны использовать другой макет-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
        }