পটভূমি সেট করতে:
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));
}
তবে আমি মনে করি সমস্যাটি ঘটে কারণ আপনি বড় আকারের চিত্র লোড করার চেষ্টা করছেন। বৃহত্তর বিটম্যাপগুলি কীভাবে লোড করা যায় তা
এখানে একটি টিউটোরিয়াল is
আপডেট:
getDrawable (int) এপিআই স্তরের 22 এ অবনতি হয়েছে
getDrawable(int )
এখন এপিআই স্তরে 22 হ্রাস করা হয়েছে instead পরিবর্তে সমর্থন লাইব্রেরি থেকে আপনার নিম্নলিখিত কোডটি ব্যবহার করা উচিত:
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);
}
}
কনটেক্সট কমপ্যাট সম্পর্কিত আরও বিশদ
22 এপ্রিল হিসাবে, আপনার getDrawable(int, Theme)
getDrawable (int) এর পরিবর্তে পদ্ধতিটি ব্যবহার করা উচিত ।
আপডেট:
আপনি সমর্থন ভি 4 লাইব্রেরি ব্যবহার করছেন, নিম্নলিখিত সমস্ত সংস্করণ জন্য যথেষ্ট হবে।
ContextCompat.getDrawable(context, R.drawable.ready)
আপনার অ্যাপ্লিকেশন build.gradle এ আপনাকে নিম্নলিখিতগুলি যুক্ত করতে হবে
compile 'com.android.support:support-v4:23.0.0' # or any version above
অথবা নীচের মতো কোনও এপিআইতে রিসোর্সকম্প্যাট ব্যবহার করে:
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)
পরিবর্তে ব্যবহার করতে পারেন , গুগল ইতোমধ্যে এটি 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
এখন, অনক্রিট, অন-রিসুমের মতো কোনও ফাংশনের ভিতরে
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 এবং লক্ষ্যSdkVersion 23 ব্যবহার করছি।
নিম্নলিখিতটি আমার জন্য কাজ করছে, এটি ব্যবহার করে
ContextCompat.getDrawable(context, R.drawable.drawable);
পরিবর্তে ব্যবহার করুন:
layout.setBackgroundResource(R.drawable.ready);
বরং ব্যবহার করুন:
layout.setBackground(ContextCompat.getDrawable(this, R.drawable.ready));
getActivity()
কোনও ক্রিয়াকলাপের জন্য কল করে যদি কোনও খণ্ডে ব্যবহৃত হয় this
।
যদি আপনার ব্যাকগ্রাউন্ডগুলি এখনই অঙ্কনযোগ্য ফোল্ডারে থাকে তবে আপনার প্রকল্পের চিত্রগুলি অঙ্কনযোগ্য থেকে অঙ্কনযোগ্য-নডপি ফোল্ডারে সরানোর চেষ্টা করুন। এটি আমার পক্ষে কাজ করেছে, মনে হয় অন্য কোনও চিত্রগুলি সেগুলি নিজেই পুনরুদ্ধার করেছে ..
ব্যবহারের 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));
চেষ্টা করুন ViewCompat.setBackground(yourView, drawableBackground)
এই কোড ব্যবহার করে দেখুন:
Drawable thumb = ContextCompat.getDrawable(getActivity(), R.mipmap.cir_32);
mSeekBar.setThumb(thumb);
এটা চেষ্টা কর.
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));
ইনসাইড অ্যাপ্লিকেশন / মাঝামাঝি / your_xml_layout_file .xml
remoteViews.setInt(R.id.btn_start,"setBackgroundResource", R.drawable.ic_button_start);