সেট কম্পাউন্ডড্রেবলগুলি () কল করা যৌগিক অঙ্কনযোগ্য প্রদর্শন করে না


322

আমি setCompoundDrawablesপদ্ধতিটি কল করার পরে , যৌগিক ড্রয়যোগ্যটি প্রদর্শিত হবে না ..

Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);

কোন চিন্তা?


9
নীচের উত্তরে বর্ণিত হিসাবে, নামের পদ্ধতির রূপটি কল করা (..)WithIntrinsicBoundsপ্রয়োজন। পার্শ্ব নোটে, paddingকম্বাউন্ড ড্রয়াবলটির জন্য অবশ্যই এই কলটির পরে কোনও প্রভাব ফেলতে হবে
Dr1Ku

6
ডকুমেন্ট বলেছেন: drawables ইতিমধ্যে ছিল আবশ্যক setBounds(Rect)বলা হয়।

হাই হান্টার্প, সবেমাত্র আপনার সাথে কফি শপে (অ্যাঞ্জেল) দেখা হয়েছিল, এখন যে আমি জানি আপনি অ্যান্ড্রয়েড ড্রয়াবলগুলি কী তা জানেন (এবং সম্ভবত তাদের অনেকের সাথে কাজ করার সময় আপনি ত্রুটি ত্রুটির কারণে স্মৃতিতে আঘাত করেছেন), আমি আপনাকে কয়েকটি সম্পর্কে বলতে পারি যে প্রকল্পগুলিতে আমি সহযোগিতা করেছি তাদের এই সমস্যাটি মোকাবেলা করতে হবে, github.com/JakeWharton/DiskLruCache দেখুন (যা আমি আরও অ্যান্ড্রয়েড বান্ধব করতে সহযোগিতা করেছি) যা পিকাসো ব্যবহার করেছেন ( github.com/square/picasso )
গুব্যাট্রন

@ Dr1Ku আসলে আমার এটি আগে ছিল এবং যাইহোক এটি কাজ করে।
সোতি

উত্তর:


629

আমি ব্যবহার করা প্রয়োজন setCompoundDrawablesWithIntrinsicBounds


7
এপিআই 17 দরকার তাই ড্রইবল.সেটবাউন্ডস () আরও ভাল হতে পারে
ব্যবহারকারী 1324936

6
থ্যাঙ্কিউ আপনি খুব .. এটি আমার পক্ষে কাজ করে .. আমি কি এই দুজনের মধ্যে পার্থক্য জানতে পারি?
অ্যান্ডেগাইন

1
@ ব্যবহারকারী 1324936 'আপেক্ষিক' সংস্করণটির জন্য এপিআই 17 দরকার, অন্যরা পূর্ববর্তী সংস্করণগুলির সাথে ব্যবহার করতে পারেন
মিলোস্মেন্স

11
@ ইউজার ১৩২৪৯36C সেটম্পাউন্ডড্রাউয়েবলস উইথ ইন্ট্রিন্সিকবাউন্ডস এপিআই লেভেল 3
গ্রেগ এনিস

আমি setCompoundDrawableRelativeWithIntrinsicBounds ব্যবহার করছিলাম <- এটি এপিআই 17 এ যুক্ত করা হয়েছে। ইন্টেলিসেন্স থেকে সাবধান থাকুন।
নিওন ওয়ার্জ

69

এটি ব্যবহার করুন (আমি পরীক্ষা করেছি)। এটি ভাল কাজ করে

Drawable image = context.getResources().getDrawable( R.drawable.ic_action );
int h = image.getIntrinsicHeight(); 
int w = image.getIntrinsicWidth();   
image.setBounds( 0, 0, w, h );
button.setCompoundDrawables( image, null, null, null );

1
EditText#setCompoundDrawablesWithIntrinsicBoundsকমপক্ষে এপিআই 17 লাগবে বলে 17 টিরও কম এপিআইগুলিকে টার্গেট করার সময় এটি কার্যকর
ক্রেল্লেব্লেল

6
আপনি কি এর জন্য কোনও উত্স সরবরাহ করতে পারেন? আমি যে সমস্ত ডকুমেন্টেশন দেখেছি সেগুলি ইঙ্গিত করে যে এটি এপিআই 1 থেকে পাওয়া যায়
কুড়িফু

48

চিত্রটি ফাঁকা কারণ এটি নির্দিষ্ট সীমাবদ্ধতা পায় নি। পদ্ধতি setCompoundDrawables()ব্যবহার করে আপনি ব্যবহার করতে পারেন তবে চিত্রের সীমানা নির্দিষ্ট করার আগেDrawable.setBounds()


1
সেরা উত্তর কারণ আপনি বাস্তবে সেটবাউন্ডগুলি গুরুত্বপূর্ণ কেন তা যুক্তি সরবরাহ করেন।
অ্যান্ডি

@ অ্যান্ডি ঠিক, এই শীর্ষ উত্তরগুলি ঘৃণা করুন 800 টি ভোট দিয়ে যা কেবল কোনও শব্দ ছাড়াই একটি কোড লাইন পেস্ট করেছে
বিগ_চায়ার

44

শীর্ষে স্থাপন উদাহরণ:

view.setCompoundDrawablesWithIntrinsicBounds(
    null,
    getResources().getDrawable(R.drawable.some_img),
    null,
    null
);

আর্গুমেন্ট অর্ডার: (বাম, উপরে, ডান, নীচে)


1
এটি আমার গ্রহণযোগ্য উত্তর হওয়া উচিত, আমার ক্ষেত্রে বোতামটি ব্যবহার করে। এবং এটি প্রত্যাশার মতো কাজ করে !!! এটি পিছনে সামঞ্জস্য।
মোচাদ্দি

22

আবার একটু সহজ:

Drawable image = context.getResources().getDrawable(R.drawable.ic_action );
image.setBounds( 0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight() );
button.setCompoundDrawables( image, null, null, null );

10

এটি এপিআই 22 এ অবচয় করা হয়েছে।

এই কোডটি আমার জন্য দরকারী:

Drawable drawable = ResourcesCompat.getDrawable(getResources(),R.drawable.wen, null);
drawable.setBounds(0, 0, drawable.getMinimumWidth(),
drawable.getMinimumHeight());
tv.setCompoundDrawables(drawable, null, null, null);

3

কোটলিনে:

1) সেট drawable:

val drawable = ContextCompat.getDrawable(context!!,R.drawable.ic_image)?.apply {
    setBounds(0, 0, intrinsicWidth, intrinsicHeight)
}

অথবা

val drawable = ResourcesCompat.getDrawable(resources, R.drawable.ic_image, null)?.apply {
    setBounds(0, 0, minimumWidth, minimumHeight)
}

2) সেট TextView:

textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)

অথবা

button.setCompoundDrawables(null, drawable, null, null)

পাঠ্যদর্শনটির জন্য setCompoundDrawablesWithIntrinsicBoundsকাজ করবে ..
আকাশ বিসারিয়ার

2

1

কোটলিন সহ উদাহরণ:

    val myView = layoutInflater.inflate(R.layout.my_view, null) as TextView
    myView.setCompoundDrawablesWithIntrinsicBounds(0, myDrawable, 0, 0)

0

সীমাটি নির্দিষ্ট না করায় চিত্রটি প্রদর্শিত হবে না, সুতরাং আপনার কাছে এখানে দুটি বিকল্প রয়েছে।

1 ম পদ্ধতি

setCompoundDrawablesWithIntrinsicBoundsপদ্ধতিটি ব্যবহার করুন , যেমন নীচে দেখানো হয়েছে

Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn. setCompoundDrawablesWithIntrinsicBounds(myDrawable, null, null, null);

২ য় পদ্ধতি

নিচের মত দেখানো হয়েছে আপনি টেক্সটভিউতে আবেদন করার আগে অঙ্কনযোগ্যগুলির সীমানা প্রয়োগ করতে পারেন

Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
myDrawable.setBounds( 0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());
btn.setCompoundDrawables(myDrawable, null, null, null);

এটাই.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.