canvas.getHeight невероятно похож на view.getHeight на планшетном ПК

У меня есть вид прокрутки, что я добавляю его в свой пользовательский вид, в 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() точно отображает высоту экрана.

1 ответ

Ваш вопрос, вероятно, почему вы не видите ничего нарисованного.

Возможно, вы захотите заглянуть в свой объект Paint, для которого в основном не установлены значимые значения. Вы можете создать переменную-член и установить все необходимые свойства (цвет и т. Д.). Чем использовать этот объект каждый раз, когда вы вызываете drawText (или другой метод рисования).

Редактировать: Если объект Paint не является проблемой;) Возможно, вам придется дважды проверить координаты, которые вы строите. Вы используете ScrollView - так, может быть, это что-то об этом canvas.getClipBounds, Почему бы просто не нарисовать текст на 0,0?

Другие вопросы по тегам