2014-09-19 34 views
10

Örneğin, Android'deki bir TextView için, setWidth yöntemi yerine LayoutParams değerini ayarlamanız gerekir.NedenWindth çalışmaz?

TextView tv = new TextView(getContext()); 
LayoutParams params = new LayoutParams(100, LayoutParams.WRAP_CONTENT); 
tv.setLayoutParams(params); 

Ama neden? Android docs'da aynı sonucu vereceğini söylüyor.

+0

İlginizi çekenlerle ilgileniyor. LayoutParams her zaman kullanmam gereken bir dikenim. – burmat

+0

Bir ebeveynin onu etkilemediğinden emin olmak için xml'de manuel olarak denediniz mi? ya da başka bir şey .invalidate(). –

+0

'setWidth()', ancak düzen paramları tarafından geçersiz kılınabilir. Yani, 'TextView' 'setWidth()' in çalışmamasına ve 'TextView' öğesinin düzenine ilişkin bir örnek gönderin. – laalto

cevap

1

layoutParams öğesini kullanmanız gerekir, çünkü farklı bir genişlik veya yükseklik ayarlamak, yerleşimin tüm konumlarını değiştirebilir. Tüm görüş hiyerarşisi yeni boyutlara uyum sağlamak zorundadır, tek yol düzen paramızlarını değiştirmektir. Ebeveyn daha sonra fark edilir ve çocukların görüşlerini ölçme sürecini başlatır.