2015-07-21 2 views
0

У меня есть андроид приложение, которое в настоящее время использует только 1 активность, только в ландшафтном режиме, android:screenOrientation="sensorLandscape"RelativeLayout и 2 Фрагменты разделив экран - Нет веса или LinearLayout

Я хочу фрагмент 1, чтобы принять 50% пространства RelativeLayout (это означает 50% родительской RelativeLayout ширины и высоты). То же самое с фрагментом 2. Я слышал, что использование весов нецелесообразно, так как это может вызвать проблемы с производительностью.

Это то, что я хочу: enter image description here

Это мой код (игнорировать значения 40dp):

<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:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainPreviewActivity"> 

    <fragment 
     android:layout_width="40dp" 
     android:layout_height="40dp"> 
    </fragment> 

    <fragment 
     android:layout_width="40dp" 
     android:layout_height="40dp"> 
    </fragment> 

</RelativeLayout> 
+0

Нет ничего плохого в использовании LinearLayout и 'layout_weight'. Это может стать проблемой, если у вас есть вложенные веса и более глубокая иерархия представлений. – Karakuri

ответ

1

В качестве альтернативы, вы можете иметь configChanges = «ориентация | Размер экрана» в вашем AndroidManifest.xml используйте FrameLayout как корень и ручка изменения размера себя в onConfigurationChanged вашей деятельности. Таким образом, вы будете контролировать то, что происходит во время изменения размера/поворота.

Для меня это кажется более-убитым. Я бы просто пошел за LinearLayout и layout_weight, как это было предложено в предыдущем комментарии. Для такой простой компоновки не должно быть проблем с производительностью. Это зависит, конечно, от сложности макетов ваших фрагментов.

2
  1. Я не уверен, что производительность вопросы вы получите, но LinearLayout и layout_weight - очень хорошее решение для этого.
  2. Вы также можете попробовать получить ширину экрана и установить LayoutParams для фрагментов в соответствии с этим.
+0

О, хорошо, я думал, что есть более простой способ. спасибо –

+0

Я не уверен, есть ли более простой способ. Это просто предложения: P –

1

Try This

<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:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainPreviewActivity"> 
<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
    <fragment 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 
    </fragment> 

    <fragment 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 
    </fragment> 
</LinearLayout> 
</RelativeLayout> 
1

Если вы хотите использовать RelativeLayout в любом случае, вы можете положить пустой взгляд в центр этого макета. Один фрагмент должен быть toLeft этой точки зрения, а другой toRight

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