1

プログラムでForegroundColorSpanをアクションバーMenuItemに設定しようとしています...

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater mInflater = getSupportMenuInflater();
    mInflater.inflate(R.menu.menu_main, menu);

    MenuItem menuProfile = menu.findItem(R.id.profile);
    menuProfile.setTitle(createProfileMenuTitle(this));
}

public static SpannableStringBuilder createProfileMenuTitle(Context c)
{
    SpannableStringBuilder b = new SpannableStringBuilder();

    int s = b.length();
    b.append(c.getString(R.string.Username));
    int e = b.length();
    b.setSpan(new ForegroundColorSpan(c.getResources().getColor(R.color.someColor)), s, e, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    b.append(" ..some more text here");

    return b;
}

動いていない。どうすればこれを回避できますか?(MenuItem で setActionView を使用しないと、デフォルト レイアウトのスタイルの望ましい動作がすべて失われます)

4

2 に答える 2

1

答えがあります:

あなたのテーマでは、デフォルトの actionMenuTextAppearance はTextAppearance.Holo.Widget.ActionBar.Menu です

<item name="actionMenuTextAppearance">@android:style/TextAppearance.Holo.Widget.ActionBar.Menu</item>

setSpan(ForegroundColorSpan) はこの TextAppearance では機能しません。

簡単に設定できます

 <item name="android:actionMenuTextAppearance">@android:style/TextAppearance.Holo.Widget.ActionMode.Title</item>

このような:

 <style name="YourTheme" parent="android:Theme.Holo.Light">
        <item name="android:actionMenuTextAppearance">@android:style/TextAppearance.Holo.Widget.ActionMode.Title</item>
 </style>

それは動作します!

于 2015-01-13T10:07:22.610 に答える
-1

試す:

markup = "your text in html with colors";
Spanned spannable = Html.fromHtml(markup);
于 2013-02-10T01:32:09.443 に答える