Просмотр внешних границ, которые не отображаются правильно
Я рисую всплывающую подсказку после нажатия внутри пользовательской гистограммы (созданной с помощью MPAndroidChart). Иерархия представления выглядит следующим образом
<LinearLayout>
<TextView text=Move & Max Pain/>
<RelativeLayout with 2 textviews>
<chart
clipToChildren=false
clipToPadding=false
/>
</LinearLayout>
Пока представление находится внутри Диаграммы или ее ближайшего родственника, все выглядит хорошо. Но в тот момент, когда он сталкивается со своим родным братом, всплывающая подсказка усекается
![enter image description here]()
Используя HierarchyViewer, я вижу, что содержимое присутствует, но оно не нарисовано.
Чтобы получить обрезку, я использую этот код внутри draw
@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();
}
Если я изменяю Op на Region.Op.Replace, всплывающая подсказка правильно рисует, но вместо содержимого прокрутки заменяет содержимое панели инструментов.
![enter image description here]()
Ответы
Ответ 1
Вам понадобятся границы области, в которой вы хотите рисовать всплывающую подсказку, и я предполагаю, что это будет scrollview. Затем вы можете пересечь границы всплывающей подсказки с помощью прокрутки для определения того, что должно быть обрезанием; и если его вообще нужно нарисовать.
Чтобы объяснить это в коде, это будет что-то вроде этого (untested):
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);
}