2013-02-21 30 views
5

मैं अपने ऐप के croutons के लिए शैलियों को अनुकूलित करना चाहता था। कई शैलियों के लिए 4 रंग सेट करें। यह मेरा कस्टम शैलियों वर्गक्यों कस्टम crouton शैलियों उनके निर्दिष्ट रंग के बजाय ग्रे के रूप में दिखाई देते हैं?

public class TapabookCroutonStyle { 
public static final int DURATION_INFINITE = -1; 
public static final Style ALERT; 
public static final Style WARN; 
public static final Style CONFIRM; 
public static final Style INFO; 

public static final int AlertRed = R.color.rojo_vivo; 
public static final int WarnOrange= R.color.naranja_resplandeciente; 
public static final int ConfirmGreen = R.color.verde_lima; 
public static final int InfoYellow = R.color.amarillo_canario; 

private static final int DURATION_SHORT = 3000; 
private static final int DURATION_MEDIUM = 5000; 
private static final int DURATION_LONG = 10000; 


static { 
    ALERT = new Style.Builder() 
       .setDuration(DURATION_LONG) 
       .setBackgroundColorValue(AlertRed) 
       .setHeight(LayoutParams.WRAP_CONTENT) 
       .build(); 
    WARN = new Style.Builder() 
       .setDuration(DURATION_MEDIUM) 
       .setBackgroundColorValue(ConfirmGreen) 
       .setHeight(LayoutParams.WRAP_CONTENT) 
       .build(); 
    CONFIRM = new Style.Builder() 
       .setDuration(DURATION_MEDIUM) 
       .setBackgroundColorValue(ConfirmGreen) 
       .setHeight(LayoutParams.WRAP_CONTENT) 
       .build(); 
    INFO = new Style.Builder() 
       .setDuration(DURATION_MEDIUM) 
       .setBackgroundColorValue(InfoYellow) 
       .setHeight(LayoutParams.WRAP_CONTENT) 
       .build(); 
} 
} 

रंग color.xml फ़ाइल

<color name="verde_lima">#aaee22</color> 
<color name="rojo_vivo">#E8110F</color> 
<color name="naranja_resplandeciente">#FF6600</color> 
<color name="amarillo_canario">#FFCC00</color> 

मैं रैपर का उपयोग Croutons कॉल करने के लिए निर्धारित किया जाता है है।

/**    Crouton Wrappers     **/ 
public void croutonAlert(int stringId){ 
    Crouton.makeText(this, stringId, TapabookCroutonStyle.ALERT).show(); 
} 
public void croutonAlert(String text){ 
    Crouton.makeText(this, text, TapabookCroutonStyle.ALERT).show(); 
} 

public void croutonInfo(int stringId){ 
    Crouton.makeText(this, stringId, TapabookCroutonStyle.INFO).show(); 
} 
public void croutonInfo(String text){ 
    Crouton.makeText(this, text, TapabookCroutonStyle.INFO).show(); 
} 

public void croutonConfirm(int stringId){ 
    Crouton.makeText(this, stringId, TapabookCroutonStyle.CONFIRM).show(); 
} 
public void croutonConfirm(String text){ 
    Crouton.makeText(this, text, TapabookCroutonStyle.CONFIRM).show(); 
} 
public void croutonWarn(int stringId){ 
    Crouton.makeText(this, stringId, TapabookCroutonStyle.WARN).show(); 
} 
public void croutonWarn(String text){ 
    Crouton.makeText(this, text, TapabookCroutonStyle.WARN).show(); 
} 

चूंकि मैं एक्शनबैरशेलॉक का उपयोग कर रहा हूं, इसलिए मेरा ऐप थीम उस से विरासत में है और होलो से नहीं। एक अलग ऐप पर जो स्टैंडर क्रॉउटन का इस्तेमाल करता था, इसमें कोई समस्या नहीं थी। हालांकि, यहां कस्टम croutons नहीं दिखाएगा। मैंने इसे 2.2 कस्टम रोम और 4.2 (Google संस्करण) पर परीक्षण किया।

इस विषय के बारे में मुझे एकमात्र प्रश्न यह है कि यह Holo Colors on pre Holo Devices? है और यह कस्टम शैलियों से निपटता नहीं है (और समस्या मेरे मामले के विपरीत "होलो डिवाइस" पर पुन: उत्पन्न नहीं होती है)।

क्या किसी को पता है कि चार शैलियों ग्रे के रूप में क्यों दिखाई देती हैं?

संपादित करें: मैं सिर्फ परीक्षण और नियमित (अंतर्निर्मित) शैलियों जैसे स्टाइल.एएलईआरटी उचित रंग दिखाता हूं ... इसके अलावा, मैंने R.color.mycolor से रंग संदर्भों को आर में उनके मान में बदल दिया है (उदाहरण के लिए : 0x7f06000c) के बाद से है कि कैसे crouton पुस्तकालय में मूल शैली वर्ग यह होता है, और अब भी वही पारदर्शी ग्रे है ... मैं भी अल्फा मूल्यों की जाँच करने के लिए मूल holo_red_light की जाँच की और उन्हें अपने कस्टम रंग करने के लिए जोड़ा

<color name="verde_lima">#FFaaee22</color> 
<color name="rojo_vivo">#FFE8110F</color> 
<color name="naranja_resplandeciente">#FFFF6600</color> 
<color name="amarillo_canario">#FFFFCC00</color> 

लेकिन अभी भी कुछ भी नहीं।

उत्तर

3

आप विधि setBackgroundColorValue(...) का उपयोग कर रहे हैं जो वास्तविक रंग मान की अपेक्षा करता है। लेकिन आप इस विधि के लिए संसाधन आईडी प्रदान कर रहे हैं।

शायद आप setBackgroundColor(int resId) पर कॉल करना चाहते हैं जो आंतरिक रूप से संसाधन आईडी को हल करता है।

+0

यह काम किया! मैंने setBackgroundColorValue को [मूल स्टाइल क्लास] से कॉपी किया है (https://github.com/keyboardsurfer/Crouton/blob/master/library/src/de/keyboardsurfer/android/widget/crouton/Style.java) तो मैं अभी भी समझ में नहीं आता कि यह इसके लिए क्यों काम करता है, न कि मेरे लिए। लेकिन यह काम करता है, और यही मायने रखता है :) – Frank

+1

मूल स्टाइल क्लास _color values_ का उपयोग करता है और _resource id's_ ;-) नहीं – keyboardsurfer