1

私はそれを私のカスタム ビューに追加するスクロール ビューを持っています。

  protected final void onDraw(Canvas paramCanvas)
  {     
    int text_width;
    int yCanvas;
    yCanvas = paramCanvas.getClipBounds().top;
    int h = paramCanvas.getClipBounds().height() ;
    int hView = this.getHeight() ;
    int topView = this.getTop();
    paramCanvas.drawText("text...yCanvas :"+yCanvas + " --- hCanvas:"+h   +"--- hView" + hView + " ----topView"+topView, 20, yCanvas+200, new Paint());

  }

@Override
public boolean onTouchEvent(MotionEvent event) {
    boolean res = super.onTouchEvent(event);
    postInvalidate();
    System.out.println("result: " + res);
    return res;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {     
    int h = 1000;
    setMeasuredDimension(View.MeasureSpec.getSize(widthMeasureSpec), h);} 

興味深いことに、すべてのタブレットで mycanvas の高さはビューの高さと同じですが、他のデバイスでは canvas.heigh() は正確に heigh display と同じです。

4

1 に答える 1

0

あなたの質問は、おそらく、何も描かれていないのはなぜかということです。

基本的に意味のある値が設定されていないPaintオブジェクトを調べることをお勧めします。メンバー変数を作成し、必要なすべてのプロパティ(色など)を設定できます。drawText(または別のdrawメソッド)を呼び出すたびにそのオブジェクトを再利用するよりも。

編集:Paintオブジェクトが問題ではない場合;)作成している座標を再確認する必要があるかもしれません。あなたはScrollView-を使用しているので、多分それはそれについての何かですcanvas.getClipBounds。でテキストを描いてみません0,0か?

于 2012-11-29T08:27:48.433 に答える