2016-04-07 30 views
3

Android'de tuvali kullanarak yol üzerinde bir metin çizmeye çalışıyorum. Üst oval çizgi üzerinde çizmek için metni başarılı bir şekilde alabilirim. Yapmakta zorlandığım şey metnin ortalandığından emin olmak.Merkezde oval yol üzerinde metin çizme

Sorun şu ki, metni ovalin üst çizgisine çekilmeden önce ölçebiliyorken, sonradan ölçemiyorum. Bu, metnin en üstteki oval çizgide nerede çizileceğini tahmin etmeyi, her zaman biraz da olsa sorunlu hale getirir. Bunun nedeni, ilk önce çizilecek metni ölçtüğümde, ovalin üst satırında sunulduğu gibi değil, düz bir çizgi ile ölçülür.

setTextAlign(Paint.Align.CENTER)'u uygulamayı denedim, ancak bu, metnin yolun yaklaşık 3/4'ünü çizmesini ve istediğimi yapmasını sağlıyor.

Metnin çizileceği noktayı nasıl hesaplayabileceğime dair herhangi bir fikriniz var mı? Böylece, üst oval çizginin ölü merkezi mi, yoksa yardımcı olabilecek alternatif bir yöntem mi çiziliyor?

Bu, tuval kullanılarak çizilmelidir. XML TextViews vb. Kullanılarak yapılamaz.

Teşekkürler.

Oval to have text drawn on top of

+0

Kullanmaya çalıştığınız drawTextOnPath() ' –

+0

Kullanmakta olduğum şey, ancak sorun, metnin ovalin en üstteki yarım çizgisinde ortalandığından emin olmaktır. Üstte çizmek için metni başarılı bir şekilde alabiliyorum, dinamik olarak metnin sorununun ortalandığından emin oluyor. –

+0

Bir yol, Paint.getTextBounds() kullanarak işlenen metnin genişliğini hesaplamak ve ardından Metni uygun şekilde tanımlamaktır, bu da metne hizalama uygulamasının gereğini ortadan kaldıracaktır. İdeal olarak, hizalama işi [dokümantasyon] (http://developer.android.com/reference/android/graphics/Canvas.html) –

cevap

0

Bu kütüphane yapmış nasıl kontrol edebilirsiniz:

https://github.com/amulyakhare/TextDrawable Onun aynı yaklaşımı kullanarak. Ancak, birçok satır için neredeyse imkansız, bu kütüphanede benim ve diğer geliştiricilerin bunu uygulamaya çalıştığı bir sorun var ve biz sadece xml (lineLayout görünüm arka planı ve içindeki bir textView olarak çizilebilir bir yuvarlak) kullanarak sonuçlanıyoruz.

+0

XML kullanılarak değil, tuval kullanılarak çizilmelidir. Ayrıca açıklığa kavuşturmak için sadece metni üç nokta üst çizgisine çekmek istiyorum. Tam ortasında değil. Yine de teşekkürler. –

İlgili konular