Zaman değiştiren ve çalışan metni gösteren bir TextView var. TextView'ın kaç satır aldığını görmek ve buna göre farklı işlevler yapmak için View.getLineCount() yöntemini kullanmak istiyorum. Sorun, TextView'ın kaç tane hattın gerektiğini bilmesi gereken aynı yöntemde topladığı satır sayısını belirlemem gerekiyor. İki arama arasında View.invalidate() aramayı denedim ama hiçbir şey düzeltmek için görünmüyordu. Mümkünse görünümü mümkün kılmadan satır sayısını ölçmek istiyorum ama eğer bunu yapmak zorunda kalırsam bunu da yapmaya açık olacağım. Bu yeterli değilse ve daha spesifik olmaya çalışacağım zaman bana bildirin. Teşekkürler!Android: Oluşturmadan önce View of Size boyutunu ölçün
cevap
Bu, aslında Android'de gerçekten karmaşık bir sorun olabilir. Metni ayarladığınız anda (yani, görünüm oluşturulmadan veya oluşturulmadan önce) bilmeniz gerekirse, yalnızca gerçek seçenek StaticLayout'u kullanmaktır. böylece,
yourTextView.getViewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout(){
yourTextView.getLineCount();
}
}
onGlobalLayout birden çok kez çağrılabilir ve bazen (herhangi bir nedenle) Ben görünümler aslında henüz ortaya koydu olmadığını tespit ettik: Eğer yakın zaman işlemek kadar bekleyebilir, bir viewTreeObserver kullanabilirsiniz Bazı girişler yapmalı ve sonuç ne olursa olsun aslında anlam kazanır (yani satır sayısı> 0).
StaticLayouts, görünümünüzün ve satır sayınızın boyutunu size verebilecek daha karmaşık bir alternatiftir. Onlar düzgün çalışması için biraz değişiklik yapmak gerekebileceğini ve size ölçmek için çalışıyoruz görünümden boya kullanmak sağlayabiliriz:
yourTextView.setText(newText);
//the last boolean should be true if you're using padding on your view
StaticLayout measure = new StaticLayout(yourTextView.getText(), yourTextView.getPaint(),
maxAvailableWidthForYourTextView, Layout.Alignment.ALIGN_NORMAL, 1.0f, 1.0f, false)
int numberOfLines = measure.getLineCount();
sen hazırsanız
(veya zaten var) TextView sınıflandırma seni onSizeChanged veya onMeasure geçersiz kılabilir ve orada satır sayısını elde etmeye çalışın. Yine, ağaç gözlemcisinde olduğu gibi, bazen görüşünüzün gerçekte ölçülmesinden önce bunlar çağrılabilir, bu nedenle bu yöntemlerde aldığınız değeri anlamlı kılmak için kontrol etmeniz gerekebilir.
- 1. Linux'taki kitaplıkların boyutunu ölçün
- 2. Raylarda oluşturmadan önce özel doğrulama
- 3. Çağrı onStart() Fragment of Viewpager gösterilecek önce
- 4. Ubuntu'daki eclipse view sekmelerinin boyutunu nasıl azaltabilirim?
- 5. Add view in Android
- 6. Android: Paylaşmadan önce resmin dosya boyutunu alma (Intent.ACTION_SEND)
- 7. Sayfa belirleme boyutu sayfa boyutunu belirle DropDownList in jilet View
- 8. View of Sayfanın Üstü ile ilgili olarak Div'in Konumu
- 9. wpf dosyasındaki FormattedText veya GlyphRun'un 'Size' boyutunu nasıl hesaplarsınız?
- 10. jQuery/javascript - Yüklemeden önce resim boyutunu yükleyin
- 11. Android View Pager ve RecycleView
- 12. ölçün uygulama performansı
- 13. Gitmeden önce dosya boyutunu nasıl görüntüleyebilirim?
- 14. UICollection View Ekran Boyutu için Hücre Boyutunu Ayarla
- 15. Android Runtime'da "wm size" komutu nasıl çalıştırılır?
- 16. Android Studio'da kopya oluşturmadan Modül Nasıl Alınır
- 17. Veriyi ızgarada oluşturmadan önce verileri değiştir ExtJS 4
- 18. Oluşturmadan önce benzersiz bir değer olup olmadığını kontrol edin
- 19. DOM Oluşturmadan Önce Her Dijital Döngüden Sonra Yürütme İşlevi
- 20. Zaman Rölesi Oluşturmadan Önce Kullanıcı İçin Zaman Ayarı
- 21. Android - Recycler View onClick Listener çalışmıyor
- 22. Monitor.Pulse Of
- 23. jQuery - Animate css background-size?
- 24. ortak lisp programının performansını ölçün
- 25. React-Native: bir görünüm ölçün
- 26. Javascript uygulamalarının CPU yükünü ölçün
- 27. Ekran değiştirme yanıtını/süresini ölçün?
- 28. DB'ye kaydetmeden önce veya oluşturmadan önce HTML'yi Sanitise Edin? (ASP.NET'te AntiXSS kitaplığı)
- 29. Çekmece Boyutunu Belirtin - Xamarin Android
- 30. Android clipPath donanım eşdeğeri için eşdeğer View