पर मैं बहुत अजीब घटना है जब मैं StateListDrawable
इस्तेमाल करने की कोशिश:साफ़ नहीं StateListDrawable व्यवहार एंड्रॉयड
मैं एक राय यह है कि ImageView
, जहां मैं अपने निर्माता में StateListDrawable
का उपयोग फैली है। मेरी समस्या पेश करने के लिए मेरे पास 2 कोड स्निपेट हैं। पहले एक:
public class MyView extends ImageView{
Resources r = getResources();
Drawable filteredDrawable = r.getDrawable(R.drawable.smallsale);
filteredDrawable.setColorFilter(new LightingColorFilter(Color.RED, 1));
setImageDrawable(filteredDrawable);
}
और दूसरा एक:
public class MyView extends ImageView{
Resources r = getResources();
Drawable filteredDrawable = r.getDrawable(R.drawable.smallsale);
filteredDrawable.setColorFilter(new LightingColorFilter(Color.RED, 1));
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed}, filteredDrawable);
states.addState(new int[] {android.R.attr.state_focused}, filteredDrawable);
states.addState(new int[] {}, r.getDrawable(R.drawable.smallsale));
//Notice I do not use 'states' at all...
setImageDrawable(filteredDrawable);
}
(मैं इस कोड को जानते भावना का एक बहुत नहीं है - मैं बनाने के लिए समस्या को आसान बनाने के लिए करना चाहता था प्रश्न स्पष्ट है)। समस्या यह है कि पहली sinppet पर सबकुछ ठीक काम करता है - मैंने ड्रॉइंग पर एक रंग फ़िल्टर सेट किया है और यह दिखाया गया है। लेकिन दूसरे टुकड़ा पर, StateListDrawable
उदाहरण किसी भी तरह फिल्टर पर प्रभाव, और मूल drawable दिखाया जा रहा है, भले ही मैं कभी नहीं setImageDrawable(states)
फोन करके ImageView
के लिए यह जुड़ा हुआ है।
क्या कोई मुझे बता सकता है कि क्या हो रहा है? मेरा लक्ष्य इस प्रकार अलग-अलग राज्यों के लिए ही drawable साथ StateListDrawable
उपयोग करने के लिए है:
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_pressed}, filteredDrawable);
states.addState(new int[] {android.R.attr.state_focused}, filteredDrawable);
states.addState(new int[] {}, r.getDrawable(R.drawable.smallsale));
setImageDrawable(states);
(मैं कोड से यह सब करने की ज़रूरत है, क्योंकि मेरी drawable नेट से गतिशील रूप से लोड किया जाना चाहिए, और नहीं एक संसाधन के रूप में)