Да, вы можете сделать это, добавив инструмент назначения API :
Первое добавление: <RootTag xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
Пример:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="14" >
или по имени: tools:targetApi="jelly_bean"
Если вы хотите, чтобы ваши макеты использовались в разных версиях, назовите ваши файлы как:
/res/layout/layout.xml - (default directries)
/res/layout-v14/layout.xml
/res/layout-v17/layout.xml
Также, если вы хотите динамически создать элемент в вашем коде:
Вы также можете использовать аннотации в своем коде Java, чтобы упростить задачу:
Первый импорт: import android.annotation.TargetApi;
Затем используйте эту аннотацию над вашим методом:
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
Есть еще аннотации, по которым вы можете получить помощь:
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
Над аннотацией для предупреждения о методах, которые используются более низкого уровня API. Подробнее о requiresApi
: Аннотация уровня API для библиотек Android
Теперь внутри вашего метода вы можете динамически генерировать представления.
Пример из doc :
private void setUpActionBar() {
// Make sure we're running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
Прочтите документ для получения более подробной информации об аннотациях: https://developer.android.com/studio/write/annotations