1

我有一个滚动视图,我将它添加到我的自定义视图中,在 customview 中覆盖 onMeasure 和 onTouchEvent,但是当我滚动它时没有绘制任何内容。

  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() 与高度显示完全相等。

4

1 回答 1

0

你的问题可能是,为什么你没有看到任何被绘制的东西。

您可能想查看您的 Paint 对象,它基本上没有设置任何有意义的值。您可以创建一个成员变量并设置您需要的所有属性(颜色等)。每次调用 drawText (或其他绘制方法)时都重用该对象。

编辑:如果 Paint 对象不是问题;)您可能需要仔细检查您正在构建的坐标。你正在使用ScrollView- 所以也许它是关于那个的canvas.getClipBounds。为什么不直接在 处绘制文本0,0

于 2012-11-29T08:27:48.433 回答