11 ответов:
layout.setBackgroundResource(R.drawable.ready);является правильным.
Другой способ достичь этого-использовать следующее:final int sdk = android.os.Build.VERSION.SDK_INT; if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.ready) ); } else { layout.setBackground(ContextCompat.getDrawable(context, R.drawable.ready)); }но я думаю, что проблема происходит потому, что вы пытаетесь загрузить большие изображения.
здесь это хороший учебник, как загружать большие растровые изображения.обновление:
getDrawable (int ) устарел на уровне API 22getDrawable(int )теперь не рекомендуется в API уровня 22. Вы должны использовать следующий код из поддержки библиотека вместо этого:ContextCompat.getDrawable(context, R.drawable.ready)если вы ссылаетесь на исходный код ContextCompat.getDrawable, это дает вам что-то вроде этого:
/** * Return a drawable object associated with a particular resource ID. * <p> * Starting in {@link android.os.Build.VERSION_CODES#LOLLIPOP}, the returned * drawable will be styled for the specified Context's theme. * * @param id The desired resource identifier, as generated by the aapt tool. * This integer encodes the package, type, and resource entry. * The value 0 is an invalid identifier. * @return Drawable An object that can be used to draw this resource. */ public static final Drawable getDrawable(Context context, int id) { final int version = Build.VERSION.SDK_INT; if (version >= 21) { return ContextCompatApi21.getDrawable(context, id); } else { return context.getResources().getDrawable(id); } }подробнее о ContextCompat
начиная с API 22, Вы должны использовать
getDrawable(int, Theme)метод вместо getDrawable (int).обновление:
Если вы используете библиотеку поддержки v4, следующего будет достаточно для всех версии.ContextCompat.getDrawable(context, R.drawable.ready)вам нужно будет добавить следующее в сборку приложения.gradle
compile 'com.android.support:support-v4:23.0.0' # or any version aboveили с помощью ResourceCompat, в любом API, как показано ниже:
import android.support.v4.content.res.ResourcesCompat; ResourcesCompat.getDrawable(getResources(), R.drawable.name_of_drawable, null);
попробуйте это:
layout.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));и для API 16<:>
layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.ready));
RelativeLayout relativeLayout; //declare this globallyтеперь, внутри любой функции, как onCreate, onResume
relativeLayout = new RelativeLayout(this); relativeLayout.setBackgroundResource(R.drawable.view); //or whatever your image is setContentView(relativeLayout); //you might be forgetting this
вы также можете установить фон любого изображения:
View v; Drawable image=(Drawable)getResources().getDrawable(R.drawable.img); (ImageView)v.setBackground(image);
Если ваши фоны находятся в папке drawable прямо сейчас попробуйте переместить изображения из папки drawable в папку drawable-nodpi в вашем проекте. Это сработало для меня, кажется, что еще изображения масштабируются ими самими..
Я использую minSdkVersion 16 и targetSdkVersion 23 Следующее работает для меня, он использует ContextCompat.getDrawable (context, R. drawable.drawable);
вместо:
layout.setBackgroundResource(R.drawable.ready);использовать:
layout.setBackground(ContextCompat.getDrawable(this, R.drawable.ready));
getActivity()используется во фрагменте, если вызов из действия usethis
использовать butterknife чтобы привязать извлекаемый ресурс к переменной, добавив его в начало класса (перед любыми методами).
@Bind(R.id.some_layout) RelativeLayout layout; @BindDrawable(R.drawable.some_drawable) Drawable background;затем внутри одного из ваших методов добавить
layout.setBackground(background);Это все, что вам нужно
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.ready)); else if(android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) layout.setBackground(getResources().getDrawable(R.drawable.ready)); else layout.setBackground(ContextCompat.getDrawable(this, R.drawable.ready));
попробуйте этот код:
Drawable thumb = ContextCompat.getDrawable(getActivity(), R.mipmap.cir_32); mSeekBar.setThumb(thumb);
внутри приложения / res/your_xml_layout_file.xml
- присвоить имя родительскому макету.
- перейдите в свой MainActivity и найдите свой RelativeLayout, вызвав findViewById(R.id. "given_name").
- используйте макет как классический объект, вызвав метод setBackgroundColor ().
Comments