2010-10-07 8 views
0

Мне нужно программно настроить размеры просмотров в моем пользовательском интерфейсе. Скажем, я хочу, чтобы отрегулировать высоту зрения ребенка, чтобы быть высота родительского вида минус 60, я хотел бы сделать это:программно размерные представления

child.getLayoutParams().height = parent.getMeasuredHeight() - 60; 
child.requestLayout(); 

(очевидно, это проще, чем то, что мне действительно нужно сделать)

Это прекрасно работает, когда это делается в ответ на, скажем, нажатие кнопки или тому подобное .... детское представление будет регулировать размер по желанию, и все хорошо.

Теперь мне нужно также выполнить калибровку, когда начинается действие, и когда меняется ориентация. Желательно, не видя ничего прыгать. Я попытался добавить его в onStart(), но это не работает, поскольку высота родителя равна нулю. Я также пытался использовать getHeight() вместо getMeasuredHeight() и получил такое же неправильное поведение.

Где я могу поместить этот код или что мне нужно сделать, чтобы программно изменить размеры?

ответ

0

Я столкнулся с той же проблемой. Решение, которое я нашел в Интернете, использует child.post() для задержки обработки в активности onCreate. Он работает на то, что я делаю, но мне бы хотелось услышать лучшее решение ...

child.post(new Runnable() 
    { 
     public void run() 
     { 
     //resize stuff 
     } 
    } 
); 
+0

Прохладный, я могу это сделать при необходимости ... – rob

Смежные вопросы