0

カスタムの書式設定されたテキストを表示するだけのカスタム メニュー項目が ActionBar に必要です。そこで、その場で画像を作成し、それをメニュー アイコンに添付しようと考えました。したがって、私のコードでは、Layout xml を使用してテキストを作成できると考えました。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content">
    <TextView android:textColor="#bcbcbb"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content"
              android:text="Some Text"/>
    <TextView android:textColor="#ffffff"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content"
              android:id="@+id/replace_text" android:text="XXXX"/>
</LinearLayout>

次に、DrawableBitmap への一時レイアウト描画を作成します。

        LinearLayout layout = (LinearLayout)View.inflate(getApplicationContext(), R.layout.refund_text, null );
        layout.setDrawingCacheEnabled(true);
        layout.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
        layout.layout(0, 0, mRefundLayout.getWidth(), layout.getHeight());
        layout.buildDrawingCache(true);
        Bitmap bitmap = Bitmap.createBitmap(layout.getDrawingCache());
        BitmapDrawable bm = new BitmapDrawable( getBaseContext().getResources(), bitmap);
        layout.setDrawingCacheEnabled(false);
....do something with the bitmap

ただし、メジャー呼び出しの後、幅と高さはまだゼロです。誰が私が間違っているのか教えてもらえますか?

よろしくリー

4

1 に答える 1

0

MenuItem 内のテキストの色のみを制御したい場合は、MenuItem.add(int groupId, int itemId, int order, CharSequence title) に渡す CharSequence を (SpannableStringBuilder を使用して) 書式設定するだけで済む場合があります。 . 私はそれを試していないので、うまくいくかどうか教えてください!

最終的にそれ以上のことをしたい場合は、独自のカスタム ActionProvider を作成し、onCreateActionView() でレイアウトを拡張し、onPerformDefaultAction() で「何かを実行」します。

于 2013-06-07T07:52:53.833 に答える