Пишу класс, который будет заполнять View-контейнер максимально возможным количеством указанных View-элементов. Примерно так:
public class LayoutFiller {
private ViewGroup viewGroup;
private View fillingView;
public LayoutFiller ( ViewGroup viewGroup, LayoutInflater layoutInflater, int viewAddress ) {
setViewGroup(viewGroup);
setFillingView( layoutInflater.inflate(viewAddress, null, false) );
viewGroup.addView(fillingView);
Для того, чтобы измерить элементы до отрисовки, гугление рекомендовало задействовать либо метод measure вручную:
viewGroup.measure( View.MeasureSpec.makeMeasureSpec(0, ViewGroup.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, ViewGroup.MeasureSpec.UNSPECIFIED) );
fillingView.measure( View.MeasureSpec.makeMeasureSpec(0, ViewGroup.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, ViewGroup.MeasureSpec.UNSPECIFIED) );
Что возвращает 424*107 для старшего элемента(правильное значение - 720*1136), и 107*54 - для младшего(это TextView, квадратный, 35dp*35dp).
Либо задействовать ViewTreeObserver, что меня не устраивает, поскольку оный возвращает размеры неизвестно когда, после onResume, а я планирую достроить этот элемент ещё в onCreate.
Есть ли какой-то способ получить более-менее корректные размеры до отрисовки элементов?
Создаёте кастомную view
и переопределяете в нём метод onSizeChanged(), который вызывается до отрисовки но уже при известных размерах
Как меняется крипторынок и к чему готовиться владельцам криптообменников
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Есть два времени в String, например, 10:45(ожидаемое) и 10:30(текущее)Как определить количество минут до ожидаемого значения?
Здравствуйте! Подскажите, пожалуйста, как сделать внутриигровые покупки в игре на java? Допустим почти во всех играх есть встроенные покупки...
Кто может посоветовать материалы и статьи по теме - как создать свой system UI?