Я не уверен, что ты делаешь неправильно.Я пробовал макет стола, как у вас в прошлом, и не мог заставить его работать должным образом.Я обнаружил, что выполнение макета, подобного вашему, было проще с использованием относительного макета.
Вы устанавливаете левое поле в left_align, правое поле в right_align и т. Д. Затем присвойте им все значение падения, чтобы соответствоватьразмер экрана, который вы используете в данный момент, и он будет корректно обновляться на экранах других размеров.
К сожалению, как только вы выйдете за пределы 3 (скажем, 4 или 5 блоков), это исправление больше не работает.
Редактировать: Согласно комментарию Мэла, альтернативой является использование относительной компоновки с его кодом XML.
Я опубликую свое исходное исправление для справки.Я также не упомянул, что это на самом деле относительный макет внутри макета фрейма.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/start"
android:layout_width="110dip"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:text="@string/title_start" />
<Button
android:id="@+id/options"
android:layout_width="110dip"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:text="@string/title_options" />
<Button
android:id="@+id/scores"
android:layout_width="110dip"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:text="@string/title_scores" />
</RelativeLayout>