Я пишу приложение, которое создаст граф и нарисует его на SurfaceView. В конечном итоге график должен обновляться в реальном времени, но на данный момент я хочу, чтобы SurfaceView прокручивался по горизонтали, чтобы пользователь мог видеть все данные. Это возможно?
Вам нужно разместить свой пользовательский вид в горизонтальном представлении прокрутки в виде разделяемого класса. Когда вы создаете экземпляр своего пользовательского графического представления, вы говорите ему, чтобы он сам определялся по ширине графика, переопределяя метод onMeasure:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
this.setMeasuredDimension(graphWidth, graphHeight);
}
graphWidth = barLenghtInPixels * barCount + extraSpaceInPixels;
Вы можете поместить свой customView в макет xml с помощью специального тега, такого как <com.myApplication.GraphView...>
или использовать myScrollView.addView(myCustomView)
и добавить его в HorizontalScrollView
, прежде чем вы вызове setContentView(myLayout)
.
Поместите элемент HorizontalScrollView внутри поверхности. Посмотрите на gatherTransparentRegion (Регион региона) в документации HorizontalScrollView