2015-05-14 19 views
19

Özel bir çubuk grafik içine tıkladıktan sonra bir araç ipucu çiziyorum (MPAndroidChart ile oluşturulmuş). Görünüm Grafik veya INMEDIATE kardeş herşey çok görünüyor içeride ikenDış çizgileri düzgün çizilmiyor görünümü

<LinearLayout> 
    <TextView text=Move & Max Pain/> 
    <RelativeLayout with 2 textviews> 
    <chart 
     clipToChildren=false 
     clipToPadding=false 
    /> 
</LinearLayout> 

şöyle görünümü hiyerarşi olduğunu. Ama onun kardeş ile çarpıştığı anda, araç ipucu ben içerik mevcut olduğunu görebilirsiniz HierarchyViewer kullanma

enter image description here

kesik, ama çizilmiş değil. kırpma alabilmek için

, ben Region.Op.Replace için Op değiştirirseniz içeride

@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(); 
    } 

çizmek bu kodu kullanıyorum, bunun yerine, araç ipucu doğru çizmek ama Çubuğu içeriği değiştirir altında kaydırma.

enter image description here

+0

bu kaynak kodlarını gönderir misiniz:

o (denenmemiş) böyle bir şey olacağını kodunda açıklar? Harika görünüyor, ona derin bir bakış atmak istiyorum. Yine de teşekkürler. – SilentKnight

+0

Teşekkürler! Ama korkarım yapamam, üzgünüm. Grafikler için https://github.com/PhilJay/MPAndroidChart kullanıyorum, ancak bazı bölümleri özelleştirdim (özellikle X etiketleri) – Maragues

+1

Muhtemelen tek sorun değil, tuvali yanlış kullanıyorsunuz(). İlk tercümeden önce onu çağırmamanız ve sonra negatif yönde tekrar çevirmeyi aramak yerine yaptığınız geri dönüşümü çağırmanız gerekmiyor. – charliebeckwith

cevap

1

Sen ipucunu çizmek edebilmek istediğiniz alanın sınırlarını gerekir ve bunu bir Scrollview olacağını tahmin ediyorum. Sonra kırpma ne olması gerektiğini çalışmak için kaydırma ile araç ipucu sınırları kesişebilir; ve hiç çekilmemesi gerekiyorsa.

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); 
}