2010-11-10 24 views
11

Kimse kendi içinde bazı TextViews ile ViewGroup kendi uygulamasını yazmayı denedi mi?TextView yerçekimi

Sorunum var, böyle bir uygulamadaki TextViews, gravite özelliği TextView.setGravity(Gravity.CENTER)'a uygun değildir ve metin sol üst köşeye yerleştirilmiştir.

Herkes neden olduğunu anlamama yardımcı olabilir mi?

DÜZENLEME:

Ok. Nevermind, kendi başıma düşündüm. enyone ilgilenen varsa

, ben (bütün TextView'lar için) sadece üzerine yazarak yöntem onMeasure() ve super.onMeasure() den setMeasuredDimension(int, int) ve yerçekimine değiştirilen çağrı normal çalışmaya başladı.

private static class GravityTextView extends TextView { 

    public GravityTextView(Context context) { 
     super(context); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     setMeasuredDimension(widthMeasureSpec, heightMeasureSpec); 
    } 

} 
+0

Serin, paylaşım için teşekkürler! –

+0

Paylaşım için teşekkürler! Bir not, ben de TextViews onLayout gelen ölçü aramak zorunda kaldı. Yani yukarıdaki gibi ölçmek ve önlem almak için. –

+0

doğrusal/göreceli düzenin yerçekimini ayarlamaya çalışın –

cevap

3

Bu sadece yanlış özelliğini ayarlamak için çalışıyoruz yanlış davranış değildir:

Temelde, benim özel düzeninde ben metni görüntülemek için aşağıdaki sınıfını kullanın.

TextView.setGravity(Gravity.CENTER) ile TextView içeriğinin ağırlığını ayarlıyorsunuz.

Aradığınız ürün layout_gravity.

+0

Tam olarak ne yapmaya çalıştığım budur. Örneğin, TextView özel düzenimdeki rasgele bir konumdaysa ve 200px alan ve içindeki metin yalnızca 50px alıyorsa, bu metnin o TextView'ın ortasına hizalanmasını istiyorum (böylece TextView yine de 200px boşluğunu koru, ancak metnin ortası, TextView sınırları ve gerçek metin arasında 75 piksel kaldı. –