0

次のコードでは:

Paint tPaint = new Paint(aPaint);
tPaint.setTypeface(typeFace);
aPaint =  new Paint(tPaint);

typeFaceはtPaintに設定されていることが確認されていますが、typeFaceはaPaintにコピーされません。

4

2 に答える 2

0

これは正確には答えではありませんが、回避策です。

次のものを置き換えました:aPaint = new Paint(tPaint); with:aPaint = newPaint(tPaint); メソッドを作成しました:

  public Paint newPaint(Paint fromPaint){
      Typeface tf = fromPaint.getTypeface();
      Paint rPaint = new Paint(fromPaint);
      rPaint.setTypeface(tf);
      return rPaint;
  }

これは機能します。

于 2012-08-28T10:06:40.307 に答える
0

わかりました、それは私のコードがどのように見えるかです。あなたが何かを見つけることができるかどうかを確認してください。

MainView.java

public class MainView extends View {
Context context;

public MainView(Context context) {
    super(context);
    this.context = context;
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Paint apaint = new Paint();
    apaint.setTextSize(100);
    apaint.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/sketchblock.ttf"));

    canvas.drawText("Dusean", canvas.getWidth()/2, canvas.getHeight()/2, apaint);
    Paint tpaint = new Paint(apaint);

    canvas.drawText("Dusean", canvas.getWidth()/3, canvas.getHeight()/3, tpaint);
}
}

MainActivity.java

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new MainView(this));
}
}

とAssetsフォルダのフォントassets/fonts / font.ttf

于 2012-08-28T09:14:13.017 に答える