Mümkünse yüksekliği de almak isterim.Android'de dize genişliği nasıl alınır?
cevap
Bir Paint nesnesinin getTextBounds(String text, int start, int end, Rect bounds)
yöntemini kullanabilirsiniz. TextView
tarafından sağlanan boya nesnesini kullanabilir veya istediğiniz metin görünümünü kendiniz oluşturabilirsiniz.
yapabilir misin bir TextView'un kullanarak aşağıdaki: Sadece genişliği gerekiyorsa
Rect bounds = new Rect();
Paint textPaint = textView.getPaint();
textPaint.getTextBounds(text, 0, text.length(), bounds);
int height = bounds.height();
int width = bounds.width();
kullanabilirsiniz:
float width = paint.measureText(string);
http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String)
Ayrıca, metni belirli bir yazı tipi boyutunda ölçmek isterseniz, 'TextPaint paint = new TextPaint(); paint.setTextSize (yazı boyutu); '. textSize piksel cinsindendir. –
bir için iki farklı genişlik ölçüleri vardır Metin. Biri genişlikte çizilen piksellerin sayısı, diğeri ise metnin çizilmesinden sonra imlecin ilerlemesi gereken 'piksel' sayısıdır.
paint.measureText ve imleç verilen dize çizildikten sonra ileri edilmelidir (float) piksel sayısını döndürürpaint.getTextWidths. Boyanan piksel sayısı için diğer cevapta belirtildiği gibi paint.getTextBounds kullanın. Buna fontun 'Advance' denir inanıyorum.
Bazı fontlar için bu iki ölçüm farklıdır (örneğin), örneğin Black Chancery fontu diğer harfleri (üst üste binen) aşan harfler içerir - bkz. "L" harfi. Piksellerin boyanması için diğer yanıtta belirtildiği gibi paint.getTextBounds kullanın.
ben bu şekilde genişliğini ölçmüştür:
String str ="Hiren Patel";
Paint paint = new Paint();
paint.setTextSize(20);
Typeface typeface = Typeface.createFromAsset(getAssets(), "Helvetica.ttf");
paint.setTypeface(typeface);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.FILL);
Rect result = new Rect();
paint.getTextBounds(str, 0, str.length(), result);
Log.i("Text dimensions", "Width: "+result.width());
Bu size yardımcı olacaktır.
- 1. imleç aracılığıyla androidde Zaman damgası sütun değeri nasıl alınır
- 2. androidde openssl nasıl kurulur
- 3. PDF sayfa genişliği ve yüksekliği nasıl alınır?
- 4. Geçerli bant genişliği (indirme) hızı nasıl alınır?
- 5. JavaScript kodu kullanılarak tarayıcı genişliği nasıl alınır?
- 6. Libgdx'te dize genişliği nasıl olur? Acaba
- 7. Dize TextWidth (Tuvalsiz) nasıl alınır?
- 8. Dize sonunda sayı nasıl alınır?
- 9. Tepki yerli androidde Coach işareti nasıl uygulanır?
- 10. androidde shift-jis kodunu çözme
- 11. Cihaz ham genişliği ve yüksekliği veya gerçek ekran genişliği ve yüksekliği nasıl alınır?
- 12. OCaml'de biçimlendirilmiş dize nasıl alınır? OCaml yılında
- 13. Dize regexp ruby tüm basamakları nasıl alınır?
- 14. Bir dize değişmezine çift tırnak nasıl alınır?
- 15. Sınıf adı dize olarak nasıl alınır?
- 16. ViewPager Bağdaştırıcısı içinde Dize Kaynağı nasıl alınır?
- 17. Regex.Replace kullanarak dize sayıları nasıl alınır?
- 18. Piksel cinsinden dize yazı tipi genişliği nasıl hesaplanır?
- 19. androidde greyview için özel adaptör
- 20. Metin genişliği nasıl sınırlanır
- 21. QWidget genişliği nasıl ayarlanır?
- 22. Uygulama boyutlarını bilirken androidde özel görünümler ekleme
- 23. Kötü amaçlı yazılım geliştiricilerinin androidde firebase'e müdahale etmesini nasıl önleyebilirim
- 24. Yapılandırma değişiklikleri yapıldıktan sonra androidde şişirilmiş bir düzen nasıl kaydedilir?
- 25. Boşluk ve karışık durumlarla rasgele dize nasıl alınır?
- 26. Bir genişlik değerine göre dize parçası nasıl alınır?
- 27. Java'da derleme zamanında Long.MAX_VALUE dize değeri nasıl geri alınır?
- 28. PHP/regex: HTML etiketinin dize değeri nasıl alınır?
- 29. Python C API: özel durumun dize temsili nasıl alınır?
- 30. Yansıma aracılığıyla bir Java alanından dize değeri nasıl alınır?
@Frank: String bir yayılmış dizgeyse? – Ashwin
Harika cevap. Bu arada, textView.setTextSize() 'işlevini çağırırsanız sonuç daha doğru olur. – li2