Android – установить фоном программного обеспечения

Я заметил, что метод setBackground для объекта RelativeLayout предназначен для API 16 (Android 4.1) и выше, но мое приложение имеет целевой API 8, и я не могу его использовать.

Есть ли альтернативное решение этой проблемы (помимо маркировки класса / метода с помощью TargetApi (16) или изменения целевого API в манифесте)?
Спасибо!

Редактировать : Eclipse был глючит, и он показал мне ту же ошибку для setBackgroundDrawable, но теперь он работает. Спасибо за помощь.

Solutions Collecting From Web of "Android – установить фоном программного обеспечения"

Используйте один из:

  • .setBackgroundColor(int) (если вы задаете цвет)
  • .setBackgroundDrawable(Drawable) (если вы установите его на тип Drawable , это устарело и заменено на .setBackground(Drawable) ).
  • .setBackgroundResource(int) (для установки ресурса из R.java )

Если вы используете второй вариант, обязательно выполните условную проверку версии вашего API:

 if (Build.VERSION.SDK_INT >= 16) view.setBackground(...); else view.setBackgroundDrawable(...); 

… и пометьте его с помощью @TargetApi(16) и @SuppressWarnings("deprecation") .

Это зависит. Если вы хотите установить цвет в качестве фона, используйте setBackgroundColor() . Для Drawable вы можете использовать теперь устаревший метод setBackgroundDrawable() для API ниже 16 и setBackground() для устройств API 16. Вы также можете использовать setBackgroundResource() для установки ресурса в качестве фона.

Обратите внимание, что, хотя многие методы отмечены как устаревшие, мне еще предстоит встретить тот, который действительно был удален. Поэтому, хотя вы можете использовать устаревший метод даже в API 16, я бы рекомендовал настроить ваш целевой API на 16 и использовать if else для переключения между методами, в зависимости от версии API, на которой работает устройство.

Вместо этого используйте setBackgroundDrawable () . Он делает то же самое, но он устарел с нового setBackground() .