Почему setWidth не работает?

Например, для TextView в Android вам нужно установить LayoutParams вместо метода setWidth.

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

Но почему? В Android-документах говорится, что он принесет тот же результат.

Ответ 1

Вы должны использовать layoutParams, потому что установка другой ширины или высоты может изменить все расположение макета. Вся иерархия представлений должна соответствовать новым измерениям, единственным способом является изменение параметров макета. Затем родитель получает уведомление и начинает весь процесс измерения взглядов детей.