আমি একটি সাধারণ কাঠামো ফাংশন তৈরির চেষ্টা করছি যা চাপানো / ফোকাসড / নির্বাচিত / ইত্যাদি যখন কোনও অঙ্কনযোগ্যকে হাইলাইট করে তোলে ।
আমার ফাংশনটি একটি অঙ্কনযোগ্য এবং একটি স্টেটলিস্টড্র্যাবেলকে ফিরিয়ে দেয়, যেখানে ডিফল্ট রাষ্ট্রটি নিজেই android.R.attr.state_pressed
অঙ্কনযোগ্য হয় এবং এর জন্য রাজ্যটি একই আঁকিয়ে যায় , কেবলমাত্র একটি ফিল্টার ব্যবহার করে প্রয়োগ করা হয় setColorFilter
।
আমার সমস্যাটি হ'ল আমি অঙ্কনযোগ্যকে ক্লোন করতে পারি না এবং ফিল্টার প্রয়োগের সাথে এটির একটি পৃথক উদাহরণ তৈরি করতে পারি না। আমি যা অর্জন করতে চাইছি তা এখানে:
StateListDrawable makeHighlightable(Drawable drawable)
{
StateListDrawable res = new StateListDrawable();
Drawable clone = drawable.clone(); // how do I do this??
clone.setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
res.addState(new int[] {android.R.attr.state_pressed}, clone);
res.addState(new int[] { }, drawable);
return res;
}
যদি আমি ক্লোন না করে তবে ফিল্টারটি অবশ্যই উভয় রাজ্যেই প্রয়োগ করা হয়। আমি খেলতে চেষ্টা করেছিলাম mutate()
কিন্তু তাতে কোন লাভ হয় না ..
কোন ধারনা?
হালনাগাদ:
গৃহীত উত্তর প্রকৃতপক্ষে একটি আকর্ষণীয় ক্লোন। যদিও এটি আমার সাধারণ ফাংশনটি অন্য কোনও সমস্যাতে ব্যর্থ হয়েছে তা আমাকে সাহায্য করেনি। দেখে মনে হচ্ছে আপনি যখন কোনও স্টেটলিস্টে একটি অঙ্কনযোগ্য যোগ করবেন তখন এটি তার সমস্ত ফিল্টার হারাবে।