Для приложения, которое я сейчас разрабатываю, мне нужно адаптировать макет различных действий к пользовательскому уровню API Android.
Есть ли способ сделать это?
Для приложения, которое я сейчас разрабатываю, мне нужно адаптировать макет различных действий к пользовательскому уровню API Android.
Есть ли способ сделать это?
Если то, что вы пытаетесь сделать, это показать другой макет, в зависимости от того, какая версия 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 можно найти на этой странице.
Как сказал 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
}
Если у вас уже есть доступные ресурсы для каждого уровня платформы, вы можете использовать информацию, представленную в http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources
В частности, посмотрите на строку "Версия платформы (уровень API)" в таблице 2.