1

Android でテキストに黒い線を描きたいです。

私はこの例を見てきました: Android で MapView に境界線を付けてテキストを描画するにはどうすればよいですか?

ソリューションが onDraw() をオーバーライドしてストロークを作成する場所。

問題は、私はまだ比較的 Android を使い始めたばかりで、そのソリューションの使用に移行する方法がわからないことです。

私の onCreate で、テキストの書体を設定しました(カスタムです):

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeatures();

    // Set content view and component listeners
    setContentView(R.layout.meme_maker);
    setListeners();

    context = this;

    Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Impact.ttf");
    TextView mmt = (TextView) findViewById(R.id.meme_maker_title);
    TextView ttc = (TextView) findViewById(R.id.top_text_canvas);
    TextView tbc = (TextView) findViewById(R.id.bottom_text_canvas);

    ttc.setTypeface(tf);
    tbc.setTypeface(tf);
    mmt.setTypeface(tf);
}

そして、ユーザーがTextEntryに必要なテキストを書き、その後ボタンをクリックすることに基づいて、TextViewのテキストコンテンツを変更するonClickListenerがあります。

ImageView ii = (ImageView) findViewById(R.id.insert_image);
    ii.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText tt = (EditText) findViewById(R.id.top_text_text);
            EditText bt = (EditText) findViewById(R.id.bottom_text_text);

            TextView ttc = (TextView) findViewById(R.id.top_text_canvas);
            TextView btc = (TextView) findViewById(R.id.bottom_text_canvas);

            ttc.setText(tt.getText().toString().toUpperCase());
            btc.setText(bt.getText().toString().toUpperCase());
        }
    });

ここまではかなり簡単です。私の質問は次のとおりです。テキストのストロークを挿入する方法は? どこ?Canvas オブジェクトと Paint オブジェクトを作成する必要がありますか?

4

1 に答える 1

1

TextViewでレンダリングされたテキストの影を取得する最も簡単な方法は、この回答で説明されているようにスタイルを設定することです。それはほとんど作業を必要とせず、あなたの状況でうまくいくように聞こえます。

リンクする手法を使用するには、既存のViewクラスを拡張し、onDraw()をオーバーライドし、onDraw()に渡されたキャンバスでCanvas.drawText()を使用してテキストを自分でレンダリングする必要があります。これは、状況によってはまさに必要なものになる可能性がありますが、現在の状況ではやり過ぎのように聞こえます。さらに詳しく調べたい場合は、このテーマに関するAndroid開発ガイドをお読みください。

于 2012-05-30T23:15:52.303 に答える