Я бы посоветовал взять лист из учебника Android, иметь большую «сетку» и сохранить все размеры в модульных кратных - это избавит вас от необходимости каждый раз решать проблему с рюкзаком!
Для Например, вместо кнопки шириной 80 и высотой 40 вы сохраняете ее как метаданные как {2: 1} (при условии, что ваша сетка макета составляет 40 ^ 40 квадратов).
Таким образом, если вы иметь рабочую панель с пространством, скажем, {2:12}, она может быть заполнена двумя объектами размером {2: 6} или, может быть, 3 размером {2: 4}.
Довольно просто fit-to-max, так как любое доступное пространство можно просто увеличить (скажем, вы удаляете элемент {1: 1}, вы можете просто расширить соседний, чтобы занять пространство и c - вы, конечно, можете создать свой собственные правила относительно того, могут ли объекты масштабироваться в одном направлении и т. д. c.
Другое преимущество этого подхода состоит в том, что вы можете легко управлять экранами разных размеров и разрешений, сохраняя при этом ту же структуру и внешний вид. * 100 9 *