पृष्ठभूमि सेट करने के लिए:
RelativeLayout layout =(RelativeLayout)findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);
क्या इसे करने का सबसे अच्छा तरीका है?
RelativeLayout layout =(RelativeLayout)findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);
क्या इसे करने का सबसे अच्छा तरीका है?
जवाबों:
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 स्तर 22
getDrawable(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 पर अधिक जानकारी
एपीआई 22 के रूप में, आपको getDrawable(int, Theme)
getDrawable (int) के बजाय विधि का उपयोग करना चाहिए ।
अद्यतन:
यदि आप समर्थन v4 पुस्तकालय का उपयोग कर रहे हैं, तो निम्नलिखित सभी संस्करणों के लिए पर्याप्त होगा।
ContextCompat.getDrawable(context, R.drawable.ready)
आपको अपने ऐप build.gradle में निम्नलिखित जोड़ना होगा
compile 'com.android.support:support-v4:23.0.0' # or any version above
या नीचे दिए गए किसी भी API में रिसोर्सकंपैट का उपयोग कर रहे हैं:
import android.support.v4.content.res.ResourcesCompat;
ResourcesCompat.getDrawable(getResources(), R.drawable.name_of_drawable, null);
if(buttonBackground.equals(R.drawable.myDrawable))
कि Drawable buttonBackground = myButton.getBackground();
मुझे यह त्रुटि कहां मिलेगी: snag.gy/weYgA.jpg
myActivity.getTheme()
अशक्त पैरामीटर के बजाय विधि के नवीनतम संस्करण की भी आवश्यकता होगी :myView.setBackground( getResources().getDrawable(R.drawable.my_background, activity.getTheme()));
AppCompatResources.getDrawable(this.getContext(), resId)
इसके बजाय उपयोग कर सकते हैं , Google ने पहले ही इसे AppCompat*
विजेट / दृश्य में लागू किया है , जैसे:android.support.v7.widget.AppCompatCheckBox
इसे इस्तेमाल करे:
layout.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));
और एपीआई 16 के लिए <:
layout.setBackgroundDrawable(ContextCompat.getDrawable(context, R.drawable.ready));
getResources().getDrawable()
। सही कोड layout.setBackgroundResource(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);
(.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
आंतरिक कोड को लागू करने की आवश्यकता है
मैं एक minSdkVersion 16 और targetSdkVersion 23
का उपयोग कर रहा हूं । निम्नलिखित मेरे लिए काम कर रहा है, यह उपयोग करता है
ContextCompat.getDrawable(context, R.drawable.drawable);
के बजाय का उपयोग करने का:
layout.setBackgroundResource(R.drawable.ready);
बल्कि उपयोग:
layout.setBackground(ContextCompat.getDrawable(this, R.drawable.ready));
getActivity()
एक टुकड़ा में प्रयोग किया जाता है, अगर एक गतिविधि के उपयोग से बुला रहा है this
।
यदि आपकी पृष्ठभूमि अभी ड्रा करने योग्य फ़ोल्डर में है, तो अपने प्रोजेक्ट में चित्र को ड्रा करने योग्य से ड्रॉबल-नोड्पी फ़ोल्डर में ले जाने का प्रयास करें। यह मेरे लिए काम करता है, ऐसा लगता है कि अन्य छवियों को उनके द्वारा स्व ..
अपनी कक्षा के शीर्ष पर (किसी भी तरीके से पहले) इसे जोड़कर ड्रा करने योग्य संसाधन को एक चर में बाँधने के लिए तितलियों का उपयोग करें ।
@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));
के लिए एक कोशिश दे ViewCompat.setBackground(yourView, drawableBackground)
इसे इस्तेमाल करे।
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));
एप्लिकेशन के अंदर / Res / your_xml_layout_file .xml
remoteViews.setInt(R.id.btn_start,"setBackgroundResource", R.drawable.ic_button_start);