Arka Planı ayarlamak için:
RelativeLayout layout =(RelativeLayout)findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);
Bunu yapmanın en iyi yolu mu?
RelativeLayout layout =(RelativeLayout)findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);
Bunu yapmanın en iyi yolu mu?
Yanıtlar:
layout.setBackgroundResource(R.drawable.ready);
doğru.
Bunu başarmanın başka bir yolu aşağıdakileri kullanmaktır:
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));
}
Ama bence sorun büyük görüntüler yüklemeye çalıştığınız için oluşuyor.
İşte büyük bitmapleri nasıl yerleştirileceğini iyi bir öğretici.
UPDATE:
API düzey 22'de kullanımdan kaldırılan getDrawable (int) artık API düzey 22'de
getDrawable(int )
kullanımdan kaldırıldı. Bunun yerine destek kitaplığından aşağıdaki kodu kullanmalısınız:
ContextCompat.getDrawable(context, R.drawable.ready)
ContextCompat.getDrawable'ın kaynak koduna başvurursanız , size şöyle bir şey verir:
/**
* 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 Hakkında Daha Fazla Bilgi
API 22'den getDrawable(int, Theme)
itibaren getDrawable (int) yerine yöntemi kullanmalısınız.
GÜNCELLEME:
Destek v4 kitaplığını kullanıyorsanız, tüm sürümler için aşağıdakiler yeterli olacaktır.
ContextCompat.getDrawable(context, R.drawable.ready)
Uygulama derlemenize aşağıdakileri eklemeniz gerekir.
compile 'com.android.support:support-v4:23.0.0' # or any version above
Veya aşağıdaki gibi herhangi bir API'de ResourceCompat kullanarak:
import android.support.v4.content.res.ResourcesCompat;
ResourcesCompat.getDrawable(getResources(), R.drawable.name_of_drawable, null);
if(buttonBackground.equals(R.drawable.myDrawable))
nereden Drawable buttonBackground = myButton.getBackground();
aldığımı denedim : snag.gy/weYgA.jpg
myActivity.getTheme()
null parametresi yerine yöntemin en son sürümüne de ihtiyacınız olacaktır :myView.setBackground( getResources().getDrawable(R.drawable.my_background, activity.getTheme()));
AppCompatResources.getDrawable(this.getContext(), resId)
bunun yerine Google'ı AppCompat*
widget / görünümde zaten uygulayabilirsiniz , örneğin:android.support.v7.widget.AppCompatCheckBox
Bunu dene:
layout.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));
ve API 16 <için:
layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.ready));
getResources().getDrawable()
. Doğru kod layout.setBackgroundResource(R.drawable.ready);
kullanılan OP gibidir. Buradaki sorun bitmap'in boyutundan geliyor.
RelativeLayout relativeLayout; //declare this globally
şimdi onCreate, onResume gibi herhangi bir fonksiyonun içinde
relativeLayout = new RelativeLayout(this);
relativeLayout.setBackgroundResource(R.drawable.view); //or whatever your image is
setContentView(relativeLayout); //you might be forgetting this
Ayrıca herhangi bir Görüntünün arka planını da ayarlayabilirsiniz:
View v;
Drawable image=(Drawable)getResources().getDrawable(R.drawable.img);
(ImageView)v.setBackground(image);
(.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
iç kodu uygulamak gerekir
Bir minSdkVersion 16 ve targetSdkVersion 23 kullanıyorum
. Aşağıdaki benim için çalışıyor, kullanır
ContextCompat.getDrawable(context, R.drawable.drawable);
Kullanmak yerine:
layout.setBackgroundResource(R.drawable.ready);
Oldukça kullanın:
layout.setBackground(ContextCompat.getDrawable(this, R.drawable.ready));
getActivity()
bir etkinlik kullanımından çağrı yapılıyorsa, bir parçada kullanılır this
.
Arka planlarınız şu anda çekilebilir klasördeyse, görüntüleri projenizdeki çekilebilir klasörden çekilebilir nodpi klasörüne taşımayı deneyin. Bu benim için çalıştı, başka görüntüler kendileri tarafından yeniden ölçeklendirilmiş gibi görünüyor.
Sınıfınızın üstüne (herhangi bir yöntemden önce) ekleyerek çekilebilir kaynağı bir değişkene bağlamak için butterknife kullanın .
@Bind(R.id.some_layout)
RelativeLayout layout;
@BindDrawable(R.drawable.some_drawable)
Drawable background;
sonra yöntemlerden birinin içine ekleyin
layout.setBackground(background);
Tüm ihtiyacınız olan bu
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));
Denemek ViewCompat.setBackground(yourView, drawableBackground)
bunu dene.
int res = getResources().getIdentifier("you_image", "drawable", "com.my.package");
preview = (ImageView) findViewById(R.id.preview);
preview.setBackgroundResource(res);
setBackground(getContext().getResources().getDrawable(R.drawable.green_rounded_frame));
Uygulama içinde / res / your_xml_layout_file .xml
remoteViews.setInt(R.id.btn_start,"setBackgroundResource", R.drawable.ic_button_start);