Адаптировать макет к платформе Android или уровню API - PullRequest
36 голосов
/ 30 июня 2011

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

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

Ответы [ 3 ]

79 голосов
/ 30 июня 2011

Если вы пытаетесь показать другой макет в зависимости от того, какая версия 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 можно найти на этой странице .

4 голосов
/ 01 января 2015

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

Если у вас уже есть ресурсы для рисования для каждого уровня платформы, вы можете использовать информацию, представленную в http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

Более конкретно, посмотрите на строку «Версия платформы (уровень API)»в таблице 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...