Я знаю, что это старый вопрос, но ради других, кто мог бы найти это, есть сценарии, в которых вы должны вызывать textView.requestLayout () после изменения параметров макета. Хотя было бы неплохо пропустить это, если вы просто меняете параметры макета как единоразово, прежде чем макет будет нарисован. В моем случае я хотел изменить параметр высоты TextView на основе выбора переключателя с помощью onCheckedChangedListener, но высота TextView будет обновляться только при первом рисовании. Добавление requestLayout () решило эту проблему.
TextView tv;
ViewGroup.LayoutParams params = tv.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
if(!tv.isInLayout()) {//make sure it isn't currently in a layout pass
tv.requestLayout();//request a layout pass
}