Я хочу установить фон для рисования вида. Для этого есть два метода (насколько я вижу): setBackground
и setBackgroundDrawable
.
Когда я использую setBackground
, он говорит, что он был добавлен на уровне API 16, но минимальная версия SDK моего проекта - 7. Я предполагаю, что он не будет работать на чем-то ниже 16, я прав? Но когда я использую setBackgroundDrawable, он говорит, что это устарело.
Что я должен использовать?
android
view
background
drawable
Pijusn
источник
источник
Ответы:
Это устарело, но все еще работает, так что вы можете просто использовать его. Но если вы хотите быть полностью правильным, просто для полноты этого ... Вы бы сделали что-то вроде следующего:
Чтобы это работало, вам нужно установить buildTarget api 16 и min build на 7 или что-то подобное.
источник
android:minSdkVersion="7" android:targetSdkVersion="17"
, однако setBackground () выходит как ошибка: вызов требует API уровня 16 (текущий минимум 7)@TargetApi(Build.VERSION_CODES.JELLY_BEAN) @SuppressWarnings("deprecation") private static void setBg(RelativeLayout layout, BitmapDrawable TileMe) { if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) { layout.setBackgroundDrawable(TileMe); } else { layout.setBackground(TileMe); } }
setBackgroundResource()
Вместо этого вы можете использовать API уровня 1.источник
setBackgroundResource(int)
принимает идентификатор ресурса, поэтому он должен раздувать представление каждый раз, чтобы установить фон. Я не хочу такого поведения, при условии, что я уже раздувал Drawable. Я что-то упускаю?Кажется, что в настоящее время нет никакой разницы между двумя функциями, как показано в исходном коде (ссылка на этот пост ):
так что это просто решение об именовании, аналогичное тому, что для fill-parent или match-parent.
источник
я знаю, что это старый вопрос, но у меня похожая ситуация, и мое решение было
а затем вы можете играть с «Drawable», применяя цветовые фильтры и т. д.
источник
использование
ViewCompat.setBackground(view, background);
источник
вы могли бы использовать
setBackgroundResource()
вместо того, т.е.relativeLayout.setBackgroundResource(R.drawable.back);
это работает для меня.
источник
Теперь вы можете использовать любой из этих вариантов. И это сработает в любом случае. Ваш цвет может быть HEX-кодом , например так:
Цвет ресурс , как это:
Или пользовательский ресурс XML , например, так:
Надеюсь, поможет!
источник
Используя Android studio 1.5.1, я получил следующие предупреждения:
и жалобы на амортизацию
Используя этот формат, я избавился от обоих:
источник
Это работает для меня: представление представления - это ваш editText, spinner ... и т. Д. И int drawable - ваш пример прорисовываемого маршрута (R.drawable.yourDrawable)
источник
Используйте setBackgroundResource (R.drawable.xml / png)
источник
У меня также была эта проблема, но я сделал обходной путь, используя ImageView .
Попробуйте использовать RelativeLayout и добавьте в него ImageView (ширина и высота: fill_parent, scaleType: center).
Также убедитесь, что imageview является первым элементом внутри RelativeLayout, чтобы он действовал как фон.
источник
if
пункт. Смотрите правильный ответ.Вы также можете сделать это:
РЕДАКТИРОВАТЬ: Как указано @BlazejCzapp, предпочтительнее избегать использования отражения, если вам удастся решить проблему без него. У меня был случай использования, когда я не мог решить без отражения, но это не случай выше. Для получения дополнительной информации, пожалуйста, посмотрите на http://docs.oracle.com/javase/tutorial/reflect/index.html
источник