2015-01-14 9 views
8

पर टिंट नहीं किया गया है, मैं अपने ऐप के लिए एपकोपेट v21.0.3 का उपयोग कर रहा हूं। मैंने यह सब कुछ किया है जैसा कि यहां लिखा गया है: android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.htmlविजेट लॉलीपॉप

लेकिन लॉलीपॉप (और पाठ्यक्रम के पुराने उपकरणों पर) पर, कुछ विजेट मेरे उच्चारण रंग के साथ रंग नहीं लगाए जाते हैं। उदाहरण के लिए:

  • SwitchCompat रंगा हुआ है: switchcompat

  • ListPreference रंगा हुआ नहीं है enter image description here

  • ProgressDialog रंगा हुआ नहीं है enter image description here

यहाँ मेरी कोड है:

build.gradle

... 
compile 'com.android.support:appcompat-v7:21.0.+' 
... 

AndroidManifest.xml

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/CET" 
     android:hardwareAccelerated="true" 
     tools:replace="label"> 

themes.xml

<resources> 

    <style name="CET" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="colorPrimary">@color/primary</item> 
     <item name="colorPrimaryDark">@color/primary_dark</item> 
     <item name="colorAccent">@color/accent</item> 
    </style> 

</resources> 

colors.xml

<resources> 

    <!-- App branding color --> 
    <color name="primary">#a32b30</color> 

    <!-- Darker variant for status bar and contextual app bars --> 
    <color name="primary_dark">#000000</color> 

    <!-- Theme UI constrols like checkboxes and text fields --> 
    <color name="accent">#a32b30</color> 

</resources> 

क्या किसी के पास कोई विचार है?

अपडेट: जून 2015 तक, अभी भी काम नहीं करता है लेकिन मैं https://github.com/afollestad/material-dialogs का उपयोग कर समाप्त हुआ। ListPreferences सहित संवाद के लिए वास्तव में अच्छा काम करता है।

उत्तर

1

कोशिश विशेषता colorControlActivated:

themes.xml

<style name="CET" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/accent</item> 
    <item name="colorControlActivated">#a32b30</item> 
</style> 

+0

धन्यवाद। पहले से ही कोशिश की है, यह अभी भी काम नहीं करता है। –

28

जब तक अन्यथा उल्लिखित नीचे गाइड

का पालन करें, नीचे दिए गए tinting के सभी दोनों पर लागू होता है एपी का उपयोग कर लॉलीपॉप और प्री-लॉलीपॉप पीकॉमपेट v21। इन विशेषताओं के समर्थन संस्करण का उपयोग करने के लिए, एंड्रॉइड नेमस्पेस को हटा दें। उदाहरण के लिए, "एंड्रॉइड: colorControlNormal" बन जाता है "colorControlNormal"। इन विशेषताओं को लॉलीपॉप चलाने वाले उपकरणों के लिए एंड्रॉइड नेमस्पेस के भीतर उनके संबंधित विशेषताओं के लिए प्रचारित किया जाएगा। इसके लिए कोई अपवाद "एंड्रॉइड:" उपसर्ग सहित नोट किया जाएगा।

All Clickable Views: 
----------- 
* ripple effect (Lollipop only) -- "colorControlHighlight" 

Status Bar: 
------------ 
* background (Lollipop only) - "colorPrimaryDark" 

Navigation Bar: 
---------------- 
* background (Lollipop only) - "android:navigationBarColor" 

EditText: 
---------- 
* underline (unfocused) -- "colorControlNormal" 
* underline overlay (focus) -- "colorAccent" 
* cursor -- "colorAccent" 
* text color -- "android:textColorPrimary" 

CheckBox: 
---------- 
* box unchecked -- "colorControlNormal" 
* box checked -- "colorAccent" 

RadioButton: 
------------- 
* unselected -- "colorControlNormal" 
* selected -- "colorAccent" 
* ripple effect (Lollipop only) -- "colorControlHighlight" 

SwitchCompat: 
------------- 
* thumb switch off -- "colorSwitchThumbNormal" 
* thumb switch on -- "colorAccent" 
* track overlay (when switched on) -- "colorAccent" 

Spinner: 
--------- 
* indicator (not pressed) -- "colorControlNormal" 
* indicator (pressed) -- "colorAccent" 
* selected entry text color (Lollipop only) -- "android:textColorPrimary" 

ActionBar: 
----------- 
* background -- "colorPrimary" 
* title color -- "android:textColorPrimary" 
* overflow icon -- "android:textColorPrimary" 
* up button -- "android:textColorPrimary" 
* action icons -- "android:textColorPrimary" † 
* overflow menu background -- "android:colorBackground" 
* overflow text color -- "android:textColorPrimary" 

Toolbar (Theme Overlay should be used): 
---------------------------------------- 
* background -- must be set manually in XML. Can do (android:background="?attr/colorPrimary") 
* overflow icon -- "android:textColorPrimary" 
* navigation icon -- "android:textColorPrimary" † 
* action icons -- "android:textColorPrimary" † 
* overflow menu background -- "android:colorBackground" 
* overflow text color -- "android:textColorPrimary" 

पीएस डिफ़ॉल्ट रूप से टिनटिंग केवल श्वेतसूची वाले स्टॉक एक्शन आइकनों के साथ काम करता है (TintManager स्रोत कोड देखें)। उदाहरण के लिए, बैक एरो आइकन "abc_ic_ab_back_mtrl_am_alpha" टिंटेड है, लेकिन उस सटीक फ़ाइल की प्रतिलिपि बनाने और उसका नाम बदलने के परिणामस्वरूप आइकन यादृच्छिक छवि लेने के दौरान टिंट नहीं किया जा रहा है और इसे "abc_ic_ab_back_mtrl_am_alpha" पर नामित करने के परिणामस्वरूप यह टिंटेड हो जाएगा।<bitmap> एक्सएमएल फ़ाइल को खींचने योग्य और "android:tint" विशेषता लागू करके लॉलीपॉप में एक्सएमएल में टिनटिंग किया जा सकता है। इस आइकन का उपयोग लॉलीपॉप और प्री-लॉलीपॉप दोनों में किया जा सकता है, लेकिन यह केवल लॉलीपॉप में टिंट किया जाएगा। ColorFilter का उपयोग करके एक्शन आइकॉन का टिनटिंग प्रोग्रामेटिक रूप से भी किया जा सकता है।

Source

+1

इस विस्तृत उत्तर के लिए धन्यवाद, लेकिन इससे मदद नहीं मिलती है: प्रोग्रेसडिअलॉग को लॉलीपॉप पर टिंट किया जाना चाहिए और यह नहीं है, मैं जो भी मूल्य उपयोग करता हूं (मैंने हर मूल्य (रंग नियंत्रण नॉर्मल, ...) को जोड़ने की कोशिश की है, यह नहीं बदलेगा : कुछ तत्व हरे हैं। –

+1

परीक्षण 'एंड्रॉइड के लिए एक विशिष्ट तत्व (बटन) पर ऐसा करने का प्रयास करें: बटन टिंट = "@ रंग/रंगएक्टेंट" '' एंड्रॉइड: बटन = "@ ड्रायबल/abc_btn_check_material" ' –

+0

मैं इसे जांचने की कोशिश करूंगा , लेकिन समस्या उन विजेट्स पर नहीं है जो मैं स्वयं का उपयोग करता हूं, लेकिन विगेट्स पर मेरे पास इस तक पहुंच नहीं है: एक मानक प्रोग्रेसडिअलॉग, और लिस्ट प्रेफरेंस वरीयता फ्रेगमेंट में उपयोग किया जाता है। इसलिए मैं इस तत्व को इन पर नहीं जोड़ सकता ... –

0

जहाँ तक मुझे पता है, एक संवाद में कुछ भी स्वचालित रूप से लॉलीपॉप (अभी तक) में रंगा हुआ नहीं है। चेकआउट material-dialogs, एक पुस्तकालय स्वचालित रूप से आपके लिए ऐसा करने के लिए (लेकिन यह केवल एपीआई 14+ का समर्थन करता है)। Android v21 Theme.Appcompat color accent is ignored, no padding on dialogs

+0

तो लॉलीपॉप पर टिंटेड डायलॉग करने के लिए मुझे ऐपकॉमपेट का उपयोग नहीं करना चाहिए? –

+0

यदि आपको निम्न स्तर एपीआई का समर्थन करने की आवश्यकता है, तो ऐपकंपेट का उपयोग करें, अगर केवल लॉलीपॉप की आवश्यकता नहीं है। लाइब्रेरी जो मैं संदर्भित करता हूं वह ऐपकंपपेट से स्वतंत्र है, मुझे लगता है कि आप उन्हें एक साथ उपयोग कर सकते हैं । – hidro

12

आप आम तौर पर अपनी खुद की प्रगति बार के बजाय एक संवाद का उपयोग करना चाहिए और फिर आप एक रंगा हुआ संस्करण है कि दोनों एल और पूर्व एल तो जैसे पर काम करता है बना सकता है:

एक समान प्रश्न से चेकआउट जवाब

public class TintedProgressBar extends ProgressBar { 
    public TintedProgressBar(Context context) { 
     super(context); 
     init(); 
    } 

    public TintedProgressBar(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public TintedProgressBar(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     init(); 
    } 

    public void init() { 
     getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.primary), PorterDuff.Mode.SRC_IN); 
     getProgressDrawable().setColorFilter(getResources().getColor(R.color.primary), PorterDuff.Mode.SRC_IN); 
    } 
} 

तुम सच में शायद dialog.findViewById(android.R.id.progess)

3

यह केवल आपके प्रश्न का हिस्सा उत्तर देता है पर संवाद में रंग आप नेस्टेड प्रगति बार मिल सकता है बदलना चाहते हैं, लेकिन से प्रगति बार शैली एपकोम्पेट लाइब्रेरी लॉलीपॉप पर उच्चारण रंग नहीं उठाती है, यहां तक ​​कि ProgressDialog के बाहर भी।

आप इस शैली के साथ अपने आप को यह सेट अप करने के लिए उदाहरण के लिए, की आवश्यकता होगी:

<style name="TintedProgressBar" parent="Widget.AppCompat.ProgressBar"> 
    <item name="android:indeterminate">true</item> 
    <item name="android:indeterminateTint">?attr/colorAccent</item> 
    <item name="android:indeterminateTintMode">src_in</item> 
</style> 

है कि आप तो एक ProgressBar या एक ContentLoadingProgressBar के लिए लागू कर सकते हैं। (ध्यान दें कि एक माता पिता के तत्व प्रगति बार में हवा भरी जाती है स्पष्ट रूप से colorAccent विशेषता को परिभाषित विषय आवेदन करना होगा, अन्यथा एक सीधा रंग संसाधन का उपयोग करें)

आप के बाद से मैं एक संवाद में प्रगति बार एकीकृत करने के लिए चाहते हैं ऐसा नहीं लगता कि ProgressDialog टाइप और ड्रायरेबल से परे अपनी प्रगति पट्टी के अनुकूलन का समर्थन करता है, आपको उपरोक्त थीम को लागू करने वाली प्रगति पट्टी के साथ AlertDialog सेट करना पड़ सकता है, या बस पर एक कस्टम संवाद के साथ जाएं, आप this answer पर जा सकते हैं एक संवाद में उपरोक्त प्रगति-बार से संबंधित विशेषताओं को लागू करें।

+1

धन्यवाद, यह सभी समाधानों से बाहर काम करता है – NyanLH

+0

सही, आकर्षण –

5
प्रगति संवाद drawable का रंग बदलने के लिए

, मैं निम्नलिखित किया है इस्तेमाल वैकल्पिक हल: मेरे द्वारा बनाए गए AppCompat चेतावनी संवाद आधार शैली

<style name="CustomAppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
      <item name="colorAccent">@color/defaultColor</item> 
      <item name="android:indeterminateTint">?attr/colorAccent</item> 
      <item name="android:indeterminateTintMode">src_in</item> 
    </style> 

और फिर प्रगति संवाद करने के लिए इन विषय लागू होते हैं:

mProgressDialog = new ProgressDialog(this, R.style.CustomAppCompatAlertDialogStyle); 
+0

जैसा काम करता है धन्यवाद, यह सभी समाधानों से बाहर काम करता है – NyanLH

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