2016-05-09 2 views
1

У меня есть одна активность с фрагментами. Я не знаю, как сделать макет, чтобы они были под другим в портретной ориентации, а один рядом с другим в альбомной ориентации. Должен ли я сделать два макета и проверить ориентацию в методе onCreate и отобразить соответствующий? Или мне нужно настроить макет по-другому? (как сейчас, это нормально в портретном виде, но в ландшафтном плане они перекрываются).Активность с двумя фрагментами, показывающими разные на экране вращения

Вот мой макет:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.apps.rucsi.biorhytm.MainActivity"> 

<fragment android:name="com.apps.rucsi.biorhytm.InputFragment" 
    android:id="@+id/inputFragment" 
    android:layout_weight="1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true"/> 

<fragment android:name="com.apps.rucsi.biorhytm.OutputFragment" 
    android:id="@+id/outputFragment" 
    android:layout_weight="1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true"/> 

В результате в портретном: enter image description here

и в Lanscape они перекрывают друг друга: enter image description here

ответ

0

Так что здесь происходит, что вы установили ваш верхний фрагмент для выравнивания к верхней части родителя android:layout_alignParentTop="true" и вашего нижнего фрагмента для выравнивания по д нижней части родителя android:layout_alignParentBottom="true". Вам просто повезло на портрете, что они подходят.

Вы можете сделать несколько вещей, чтобы добавить это ко второму фрагменту, чтобы рассказать ему, что это первый фрагмент android:layout_toEndOf="@+id/inputFragment".

Или вы можете разместить их в линейной компоновке.

+0

Ну, я положил их в LinearLayout, и я установил ориентацию вертикальной для портретной и горизонтальной для пейзажа. Все в порядке, но я должен использовать 2 макета для этого (например, layout и layout_land)? Я не могу понять, как сделать в одном макете, чтобы он соответствовал обоим ситуациям. – Rucsi

+0

Вам нужна только вертикальная ориентация. Если вы повернете свой телефон, то «вверх» изменится, так что вам не понадобится отдельный layout_land для этого – jbarat

+0

да, но в ландшафте мне не нужен график ниже, я хочу его в правой части формы , С вертикальной ориентацией он выравнивает его ниже в ландшафте. Прошу прощения, если я что-то пропущу, я очень новичок в разработке Android. Спасибо за ответ! – Rucsi

Смежные вопросы