2010-10-22 20 views
10

Uygulamanın en üst çeyreğini kaplayan ve dinamik bir metin kümesi görüntüleyen bir başlığı görüntülemek istediğim bir Etkinliğim var. Bazı durumlarda, hepsi tek bir çizgiye sığacak ve büyüklükte ve okunması kolay olacak şekilde font boyutunun büyütülmesini istiyorum. Bazı durumlarda çok satırlı (genellikle 4'ten az) olacak ve daha küçük olması gerekecek.Android çok satırlı bir Textview'i boyutlandırma TextView

komplikasyon açıkça setText içinde yeni satır ayarlarsanız ben bir beklemiyorduk nerede bazen, bir yeni satır eklemek olacaktır yani:

 
"My first line of text\nMy Second line of text" 
Might get turned into (it's right adjusted in this version): 
"My first line of 
      text 
    My second line 
      of text" 

Ya tutulması konuda nasıl emin değilim TextView, yeni satırları eklemeyi denemekten veya yalnızca her şeyi biçimlendirmeye özen göstermekten. Eğer bir metin gerçekten uzun tek bir kelime olacak şekilde ayarlamış olsaydım, seçilen bir noktada ortada yeni bir satır ekleyeceğim. Ve diğer zamanlarda, sadece son birkaç satırlık metni rastgele sıralıyorum.

Düzgün bir şekilde yerleştirilebilmesi için yazı tipi boyutunu gerçekten küçük olacak şekilde ayarlamalıyım ve sonra boyutu elle ayarlamalı mıyım? Bunun için kullanmam gereken 'en iyi uygulama' var mı? Yazı büyüklüğünü oldukça büyük bir yazı tipine göre ayarlarsam, bu tür bir iş çıkarsa da, bunu yapmanın 'doğru' yolunun ne olacağını anlamak güzel olurdu. Ve 4 tek satırlı TextViews'ı manuel olarak eklemem ve bunları kendim biçimlendirmem gerekiyor.

kullanıyorum düzeni xml geçerli:

<TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_marginTop="10dip" 
     android:layout_marginRight="8dip" 
     android:singleLine="false" 
     android:ellipsize="marque" 
     android:gravity="right|bottom" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textSize="30sp" 
/> 
+0

Umm, ne yapmak istediğinizi tam olarak açık değil. Bir metin kutusunu doldurmak için metni yeniden boyutlandırmak ister misiniz? Neden yeni satır ekliyorsunuz? Sadece boyutu ayarlayın, metne koyun ve sarın. – Falmarri

+0

Tam olarak tüm metin kutusuna sığdırmak için hangi boyutta koyarsınız? Çok büyük bir boyut seçerseniz, TextView metninize yeni satırlar eklemeyi/eklemeyi kararlaştırır (ve nasıl karar verdiğinden emin değilim). Küçük bir boyut seçerseniz ve kendinize yeni çizgiler koymuyorsanız, her yazı tipi boyutunu temelden adım atmadan ve her seferinde metni (yeni satırlar ekleyerek) yeniden göstermeden, onu boyutlandırmak zordur. Sadece TextView'in şeylerle uğraşmasını ve yeni satırları kendiniz ekleyerek/boyutlandırmasını engellerseniz iyi olur. – William

cevap

0

Yapabilirsin. Dize değerine yeni bir çizgi işareti ekleyin. Ardından bu dize değerini TextView öğesinin text niteliği olarak ayarlayın.

String temp = "ASDF \n"+"EFG \n"+"HIJ"; 
TextView tv=//find it from the context 
tv.setText(temp); 
0

Eğer Ayrıntılar için bu Android TextView Justify Text cevabı kontrol et istediğini yapma WebView'ı kullanabilirsiniz bir daha çözüm yoktur. webview kullanarak html css özelliği ile yönetebileceğiniz satır hizalamaları hakkında endişelenmenize gerek yok

-1

Doğru anladığınızdan emin olmak için sorunuzu cevaplandırmama izin verin.

  1. girişinizi Büyük olarak her bir satır olmak istiyorum Birden fazla satır
  2. varsa
  3. her zaman ve sadece satırın sonunda kırmak istiyorum her zaman metnin 1 ila 4 hatları Mümkün olduğu kadar yükseklik ekranının 1/4'ü olan metin görüntüsüne uyuyor?

seni yapmak önerme custom view:

  • kullanım Paint.getTextBounds Eğer hizalama ve bu tür kontrol etmek için yardımcı sınıf StaticLayout kullanabilirsiniz metin çizim için kod
  • dinamik iyi metin boyutunu belirlemek için .
  • özel String boyu güvenebileceğimi ekranın 1/4 kadar sürebilir ya bir LinearLayout içine koymak ve onun yüksekliğini atamak veya View.onMeasure
1

yılında programlama ayarlamak için layout_weight kullanmak görmek için ve Bu formda

if(myString.length()==40){ 
    myTextview.setTextSize(11); 
else if(myString.length()==25){ 
    myTextview.setTextSize(16); 
... 

umarım bu yardımcı olur, her boy

şey için en iyi boyutuna sığacak şekilde metin boyutunu ayarlayın.