На изображении ниже желтый квадрат представляет RelativeLayout, который находится в моем общем макете.
Верх строка «статусное сообщение» - это ViewFlipper, который реагирует на ToggleButtons (A, B), которые пользователь может нажимать. Кнопки C, D и E выполняют другие функции, которые перезагружают весь вид. Наш клиент просит расположить кнопки A, B, C, D и E, как показано ниже. (Вертикальное выравнивание не так важно, как горизонтальное.)
ИЗМЕНИТЬ, чтобы сказать, что A, B, C, D и E - это изображения с углом наклона 20x20; они выравниваются в пределах ширины около 300 дип. Я хочу, чтобы кнопки сохранили свое соотношение сторон.
Я создал расширение LinearLayout, которое расширяет кнопки A и B (из XML-файла), а затем еще одно LinearLayout, которое расширяет кнопки C, D и E в другом XML-файле.
Кнопки A и B ( на самом деле являются ToggleButtons):
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="true"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
>
<ToggleButton
android:id="@+id/A"
android:textOn=""
android:textOff=""
android:background="@layout/A"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="60dp"
android:layout_marginRight="30dp"
/>
<ToggleButton
android:id="@+id/B"
android:textOn=""
android:textOff=""
android:background="@layout/B"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
/>
</LinearLayout>
</RelativeLayout>
Кнопки C, D, E xml файл:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="true"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
>
<ImageView
android:id="@+id/C"
android:src="@drawable/C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
/>
<ImageView
android:id="@+id/D"
android:src="@drawable/D"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
/>
<ImageView
android:id="@+id/E"
android:src="@drawable/E"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
/>
</LinearLayout>
</RelativeLayout>
Мой код в основном работает, но мне нужно подправить поля, чтобы все правильно выстроить в линию (чего пока еще нет). Интересно, есть ли какой-нибудь более чистый способ выравнивания по центру наборов кнопок "A B" и "C D E"
ps: проницательный читатель заметит, что я расширяю LinearLayout, но увеличиваю RelativeLayouts. (Я не знаю, почему это вообще может работать, но) когда я вместо этого попытался расширить RelativeLayout, макет «C D E» даже не появился на моем устройстве. Я не знаю, куда это делось.