2015-11-10 11 views
16

मैं FloatingActionButton के साथ काम कर रहा हूं। उपयोगकर्ता को onClick ईवेंट के भीतर FAB पृष्ठभूमि रंग स्विच करने में सक्षम होना चाहिए।प्री-लॉलीपॉप डिवाइस पर एंड्रॉइड सेटबैकग्राउंड टिंटलिस्ट

हालांकि, setBackgroundTintList पर अनुशंसित कॉल केवल 21+ एपीआई से संगत प्रतीत होता है।

मैं कैसे - सही ढंग से - प्री-लॉलीपॉप उपकरणों पर इसके बारे में कैसे जा सकता हूं? क्या कोई विकल्प है जिसका मैं उपयोग कर सकता हूं?

अग्रिम धन्यवाद।

+1

इसे आजमाएं [उत्तर] (http://stackoverflow.com/a/30313299/4385913) –

+0

@ स्किज़ो धन्यवाद! उस ViewCompat कॉल के बारे में पता नहीं था (न तो SetSupportBackgroundTintList)। कृपया अपना उत्तर लिखें ताकि मैं इसे स्वीकार कर सकूं! – Matteo

+0

हो गया मैटेयो: डी ... –

उत्तर

25

तुम भी उपयोग कर सकते हैं setSupportBackgroundTintList

पृष्ठभूमि drawable करने के लिए एक रंग लागू होता है। वर्तमान टिंट मोड को संशोधित नहीं करता है, जो डिफ़ॉल्ट रूप से SRC_IN है।

View.setBackground (Drawable) के बाद के कॉल स्वचालित रूप से ड्रायबल को म्यूट कर देंगे और निर्दिष्ट टिंट और टिंट मोड लागू करेंगे।

इसके अलावा ViewCompat.setBackgroundTintList()

पर एक नज़र डालें पृष्ठभूमि drawable करने के लिए एक रंग लागू होता है।

एपीआई v21 या नए पर चलते समय यह हमेशा प्रभावी होगा। एपीआई v21 के पिछले प्लेटफ़ॉर्म पर चलते समय, यह केवल तभी प्रभावी होगा जब TintableBackgroundView इंटरफ़ेस को लागू किया जाए।

public static void setButtonTint(Button button, ColorStateList tint) { 
    if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP && button instanceof AppCompatButton) { 
     ((AppCompatButton) button).setSupportBackgroundTintList(tint); 
    } else { 
     ViewCompat.setBackgroundTintList(button, tint); 
    } 
} 

यह मेरे लिए काम करता है मुझे आशा है कि यह आप के लिए भी काम करता है:

मैं एक समाधान here on SO कि मैंने पहले उपयोग किया है और यह पाया।

+0

बिल्कुल सही! मुझे इसकी ही खोज थी! धन्यवाद – Matteo

+0

धन्यवाद अपवोट और इसे सही उत्तर के रूप में चिह्नित करें यदि आपको इसकी आवश्यकता होती है: पी उसे सुनकर खुशी हुई। –

+1

लेकिन FloatingActionButton TintableBackgroundView को लागू नहीं करता, इसलिए ViewCompat.setBackgroundTintList() API लिए काम नहीं करता <21 – lage

6

सरल:

fab.setBackgroundTintList(ColorStateList.valueOf(0xFF4CAF50)); 

fab निश्चित रूप से अपने FloatingActionButton और 0xFF4CAF50 सिर्फ एक उदाहरण रंग है

+0

मुझे लगता है कि आपको समझ में नहीं आया कि मेरा क्या मतलब था। आगे स्पष्टीकरण के लिए @ स्कीज़ो उत्तर की जांच करें। रास्ते से धन्यवाद! :) – Matteo

+0

इस तरह पिछड़ा संगत –

+1

@Matteo FAB कार्यान्वयन समर्थन lib से आता है और यह पिछड़ा संगतता का समर्थन करता है। 'सेटबैकग्राउंडटिंटलिस्ट()' के नीचे प्री-लॉलीपॉप के लिए अलग-अलग इम्प्ले का उपयोग कर रहा है। किटकैट डिवाइस पर सिद्ध –

0

जैसा कि कामिल सीवरिन ने टिप्पणियों में कहा था, मैं पुष्टि कर सकता हूं कि fab.setBackgroundTintList()android.support.design.widget.FloatingActionButton के उदाहरण पर काम करता है।

मैंने सैमसंग गैलेक्सी एस 5 (एंड्रॉइड 6) और सैमसंग गैलेक्सी एस 3 (एंड्रॉइड 4.3) पर परीक्षण किया है। दोनों सही ढंग से काम करता है।

संबंधित मुद्दे