5

काम नहीं कर रहा है मैं पूर्व लॉलीपॉप में ड्रॉबल्स पर टिंट सेट करने के लिए DrawableCompat.wrap का उपयोग कर रहा हूं और यह ठीक काम कर रहा है। DrawableCompat.unwrap प्री लॉलीपॉप काम नहीं कर रहा है। मुझे टिंट से पहले मूल ड्रॉबल नहीं मिल सकता है।DrawableCompat.unwrap पूर्व लॉलीपॉप

उदाहरण के लिए:

if (v.isSelected()){ 
       Drawable normalDrawable = getResources().getDrawable(R.drawable.sample); 
       Drawable wrapDrawable = DrawableCompat.wrap(normalDrawable); 
       DrawableCompat.setTint(wrapDrawable, getResources().getColor(R.color.sample_color)); 
       imageButton.setImageDrawable(wrapDrawable); 
}else{ 
       Drawable normalDrawable = imageButton.getDrawable(); 
       Drawable unwrapDrawable = DrawableCompat.unwrap(normalDrawable); 
       imageButton.setImageDrawable(unwrapDrawable); 
} 

पूर्व लॉलीपॉप उपकरणों DrawableCompact.unwrap टिंट साथ drawable वापस आती है और नहीं मूल एक

+0

इस बारे में कोई खबर

निम्नलिखित एक उदाहरण कोड है? क्या आपने हल खोज लिया? – chrisonline

+0

@ क्रिसिसलाइन कुछ नया नहीं। हम इस व्यवहार के कारण इस कार्यक्षमता का उपयोग नहीं कर रहे हैं, जो दुर्भाग्यपूर्ण है क्योंकि यह एक मजबूत उपकरण है। – user1787773

उत्तर

1

आप टिंट साफ़ करना चाहते हैं, तो फोन DrawableCompat.setTintList(drawable, null) में।

Unwrap एक विनाशकारी कार्य नहीं है, यह केवल आपके लिए मूल ड्रायबल तक पहुंच प्राप्त करने के लिए है।

Drawable drawable = (Drawable) ContextCompat.getDrawable(getContext(), R.drawable.google_image); 
if (condition) { 
    drawable = DrawableCompat.wrap(drawable); 
    DrawableCompat.setTint(drawable, ContextCompat.getColor(getContext(), R.color.grey700)); 
    DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SCREEN); 
    mImageView.setImageDrawable(drawable); 
} else { 
    drawable = DrawableCompat.unwrap(drawable); 
    DrawableCompat.setTintList(drawable, null); 
    mLoginStatusGoogleImageView.setImageDrawable(drawable); 
} 

में अपने मामले कोड होना चाहिए::

if (v.isSelected()) { 
    Drawable normalDrawable = getResources().getDrawable(R.drawable.sample); 
    Drawable wrapDrawable = DrawableCompat.wrap(normalDrawable); 
    DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(getContext(), R.color.sample_color)); 
    DrawableCompat.setTint(wrapDrawable, getResources().getColor(R.color.sample_color)); 
    imageButton.setImageDrawable(wrapDrawable); 
} else { 
    Drawable normalDrawable = imageButton.getDrawable(); 
    Drawable unwrapDrawable = DrawableCompat.unwrap(normalDrawable); 
    DrawableCompat.setTintList(unwrapDrawable, null); 
    imageButton.setImageDrawable(unwrapDrawable); 
} 
संबंधित मुद्दे