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
?