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.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>

ラッパーを使用してクルトンを呼び出します。

/**             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 はホロからではなく、それを継承しています。標準のクルトンを使用した別のアプリでは、問題はありませんでした。ただし、ここのカスタム クルトンは表示されません。2.2 カスタム ROM と 4.2 (google バージョン) でテストしました。

この件に関して私が見つけた唯一の質問は、このHolo Colors on pre Holo Devices? です。カスタムスタイルは扱いません(私の場合とは異なり、「ホロデバイス」では問題は再現しません)。

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

編集:私はテストしたばかりで、Style.ALERT のような通常の (組み込み) スタイルは適切な色を表示します...また、色の参照を R.color.mycolor から R の値 (例: 0x7f06000c) に変更しました。 Croutonライブラリの元のStyleクラスがどのようにそれを行うか、そしてまだ同じ半透明の灰色...また、元の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>

しかし、まだ何もありません。

4

1 に答える 1

3

setBackgroundColorValue(...)実際の色の値を期待する方法を使用しています。ただし、このメソッドにリソースIDを提供しています。

おそらくsetBackgroundColor(int resId)、リソースIDを内部的に解決する呼び出しを行う必要があります。

于 2013-02-22T10:39:16.033 に答える