Android: как масштабировать макет под размер экрана

Рассмотрим этот макет (вытащил изВот):Я'

Мне бы хотелось понять принципы, лежащие в основе масштабирования макета с размером экрана. Для квадрата хорошо работает пользовательская функция onMeasure:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}

Ширина и высота пользовательских кнопок Togglebuttons и Imagebuttons ниже должны масштабироваться, чтобы заполнить оставшуюся часть экрана, за вычетом layout_margins, а текст и изображения внутри должны масштабироваться для заполнения кнопок, минус отступы. Внешний край также должен масштабироваться.

Моей первой мыслью было использование относительного расположения для расположения кнопок и атрибутов layout_margin / padding для создания полей. Однако относительные макеты и layout_margin / padding требуют фиксированных значений пикселей, поэтому они нет масштабируемый.

Затем я подумал об использовании вложенных линейных макетов с layout_weights для позиционирования кнопок и представлений заполнителей для создания полей. Хотя эти методы являются масштабируемыми, они не• работать с кнопками, потому что кнопки имеют много атрибутов (размер текста, размер изображения, радиус угла и т. д.), которые требуют фиксированных значений пикселей. Это ограничение означает, например, что следующий xml:




победил't обязательно сделайте две кнопки и расстояние между ними одинаковой ширины. Все зависит от размера текста, размера изображения и т. Д. Кнопок.

мы взглянули наэтот вопрос но я чувствую, что должно быть более простое решение для такой простой проблемы, которая не должнане нужно прибегать к слишком большому количеству не-XML.

Ответы на вопрос(3)

Ваш ответ на вопрос