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

Для приложения, которое я сейчас разрабатываю, мне нужно адаптировать макет различных действий к уровню API Android для 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 можно найти на этой странице .

Как сказал Эндрю Кестер, вы можете использовать разные папки версий, но я нашел, что это большая работа, потому что она не вернется к макету по умолчанию. Если вы использовали 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 Level)» в таблице 2.