2013-02-21 5 views
5

私はアプリのクルトンのスタイルをカスタマイズしたかったのです。多くのスタイルに4色を設定します。これはカスタムクロトンのスタイルは、指定した色ではなく灰色で表示されるのはなぜですか?

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 name="verde_lima">#aaee22</color> 
<color name="rojo_vivo">#E8110F</color> 
<color name="naranja_resplandeciente">#FF6600</color> 
<color name="amarillo_canario">#FFCC00</color> 

私はクルトンを呼び出すためにラッパーを使用color.xmlファイルに設定されている私のカスタムスタイルクラスです。

/**    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(); 
} 

私はActionBarSherlockを使用しているので、私のappThemeはそれを継承し、ホロから継承しません。 standar croutonsを使った別のアプリでは問題はありませんでした。しかし、ここのカスタムクルトンは表示されません。私は2.2カスタムROMと4.2(Googleバージョン)でそれをテストしました。

この件について私が見つけた唯一の質問はHolo Colors on pre Holo Devices?で、カスタムスタイルは扱いません。(問題は私の場合と違って "ホロデバイス"に再現されません)。

4つのスタイルが灰色で表示される理由を知っている人はいますか?

編集:Style.ALERTのような通常の(組み込みの)スタイルは適切な色を表示するだけです... また、色の参照をR.color.mycolorからRの値に変更しました。 :0x7f06000c)それはクルトンライブラリ内の元のスタイルクラスはそれをしないし、まだ同じ半透明のグレー... 私もアルファ値をチェックするために、元の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(...)実際の色の値を期待する方法を使用しています。 しかし、あなたはこのメソッドにリソースIDを提供しています。

を呼び出して、リソースIDを内部的に解決したいとします。

+0

これは機能しました。私は[元のスタイルクラス](https://github.com/keyboardsurfer/Crouton/blob/master/library/src/de/keyboardsurfer/android/widget/crouton/Style.java)からコピーしたsetBackgroundColorValueを使用しましたなぜそれが私のためではなくそれのために働くのか理解していない。しかしそれはうまくいきます:それは重要です:) – Frank

+1

元のスタイルクラスは_color values_を使用し、_resource id's_ ;-)は使用しません – keyboardsurfer

関連する問題