2013-10-05 20 views
14

Bir Vitrin görünümünde Başlık ve İleti konumunun ayarlanması için herhangi bir yol var mı? Kütüphanenin en iyi pozisyonu bulmak için bir işlev kullandığını görüyorum ama bunu geçersiz kılmak istiyorum.Vitrin Görüntü metin yerçekimi

+1

Lütfen ne söylemeye çalıştığınızı, kodunuzu göstermeyi ve ardından aldığınız sorunu açıklayın. –

+0

güncelleştirildi op. Hala bunu yapmanın bir yolunu bulamadım. – arayray

+0

Showcase View github. https://github.com/Espiandev/ShowcaseView/issues/113 – arayray

cevap

8

Sadece ShowcaseView kaynak koduna kazdım ve metin konumunu ayarlamak için yerleşik bir yol yok gibi görünüyor. Bu yüzden kütüphaneye kendi değişiklikimi ekledim. sınıfta ShowcaseView yılında

bu alanları eklendi: İç sınıf ShowcaseView sınıfta Builder sınıfında Sonra

private boolean hasManualPostion = false; 
private int xPosition, yPosition, width; 

, eklemek bu yöntemler:

 public Builder hasManualPosition(boolean hasManualPosition) { 
     showcaseView.hasManualPostion = hasManualPosition; 
     return this; 
    } 

    public Builder xPostion(int xPostion) { 
     showcaseView.xPosition = xPostion; 
     return this; 
    } 

    public Builder yPostion(int yPostion) { 
     showcaseView.yPosition = yPostion; 
     return this; 
    } 
Burada yaptığınız değişiklikleri olduğunu

public void setTestPostionManually(int xPosition, int yPosition) { 
    mBestTextPosition[0] = xPosition; 
    mBestTextPosition[1] = yPosition; 
} 
:

Bundan sonra TextDrawer sınıfa bu yöntemi ekleyin

ve ShowcaseView uç değişikliği onPreDraw yöntemine 0 şöyle görünecek şekilde:

@Override 
public boolean onPreDraw() { 
    boolean recalculatedCling = showcaseAreaCalculator.calculateShowcaseRect(showcaseX, showcaseY, showcaseDrawer); 
    boolean recalculateText = recalculatedCling || hasAlteredText; 
    if (recalculateText) { 
     textDrawer.calculateTextPosition(getMeasuredWidth(), getMeasuredHeight(), this, shouldCentreText); 
     if (hasManualPostion) { 
      textDrawer.setTestPostionManually(xPosition, yPosition); 
     } 
    } 
    hasAlteredText = false; 
    return true; 
} 

Şimdi böyle ShowcaseView oluşturmalısınız:

sv = new ShowcaseView.Builder(this, true) 
       .setTarget(target) 
       .setContentTitle(R.string.showcase_main_title) 
       .setContentText(R.string.showcase_main_message) 
       .setStyle(R.style.CustomShowcaseTheme2) 
       .setShowcaseEventListener(this) 
       .hasManualPosition(true) 
       .xPostion(0) 
       .yPostion(240) 
       .build(); 

tadını çıkarın!

+0

Bu sürüm nedir? herhangi bir fikir miras içinde nasıl çalışılır? –

+1

Değişiklik 5.0.0 – Sadegh

+0

sürümü için 5.0.0'da el animasyonunu getirmenin herhangi bir yolunu biliyor musunuz? –