pie - line chart in android
Ver fuera de lĂmites no dibujar correctamente (1)
Estoy dibujando una información sobre herramientas después de hacer clic dentro de un gráfico de barras personalizado (creado con MPAndroidChart). La jerarquía de vistas es la siguiente
<LinearLayout>
<TextView text=Move & Max Pain/>
<RelativeLayout with 2 textviews>
<chart
clipToChildren=false
clipToPadding=false
/>
</LinearLayout>
Mientras que la Vista está dentro de la Carta o su hermano inmediato, todo se ve bien. Pero en el momento en que choca con su hermano, la información sobre herramientas se trunca.
Al usar HierarchyViewer puedo ver que el contenido está presente, pero no está dibujado.
Para obtener el recorte, estoy usando este código dentro del dibujo
@Override
public void draw(Canvas canvas, float posx, float posy) {
// take offsets into consideration
posx += getXOffset();
posy += getYOffset();
canvas.save();
// translate to the correct position and draw
canvas.translate(posx, posy);
Rect clipBounds = canvas.getClipBounds();
clipBounds.inset(0, -getHeight());
canvas.clipRect(clipBounds, Region.Op.INTERSECT);
draw(canvas);
canvas.translate(-posx, -posy);
canvas.restore();
}
Si cambio Op. Por Región. Reemplazar, la información sobre herramientas se dibuja correctamente pero reemplaza el contenido de la barra de herramientas, en lugar de desplazarse debajo de ella.
Necesitará los límites del área en la que desea poder dibujar la información sobre herramientas, y supongo que sería una vista de desplazamiento. Luego, puede cruzar los límites de la información sobre herramientas con el desplazamiento para averiguar cuál debería ser el recorte; Y si se debe dibujar en absoluto.
Para explicarlo en código sería algo como esto (no probado):
Rect scrollViewRect; // the bounds of your scrollview
Rect tooltipRect; // the bounds of your tooltip
bool intersects = tooltipRect.intersect(scrollViewRect)
if(intersects)
{
canvas.clipRect(tooltipRect, Region.Op.REPLACE);
draw(canvas);
}