2014-09-19 17 views
10

Na przykład dla TextView w Android musisz ustawić LayoutParams zamiast metody setWidth.Dlaczego funkcja setWidth nie działa?

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

Ale dlaczego? W dokumencie Android docs podano, że przyniesie taki sam wynik.

+0

Interesuje Cię również wiedza. LayoutParams jest cierniem w mojej stronie za każdym razem, gdy muszę go używać. – burmat

+0

Czy wypróbowałeś to ręcznie w xml, aby upewnić się, że rodzic nie ma na to wpływu? lub inną rzeczą byłoby spróbować .invalidate(). –

+0

'setWidth()' działa, ale może być nadpisany przez parametry układu. Napisz więc przykład '' ViewView' 'setWidth()', który nie działa, a układ 'TextView' jest w. – laalto

Odpowiedz

1

Musisz użyć layoutParams, ponieważ ustawienie innej szerokości lub wysokości może zmienić całe pozycjonowanie układu. Cała hierarchia widoków musi uwzględniać nowe wymiary, jedynym sposobem jest zmiana parametrów układu. Rodzic otrzymuje następnie notyfikację i rozpoczyna cały proces mierzenia poglądów dzieci.

Powiązane problemy