2014-11-19 2 views
2

У меня есть фрагмент, который заполняет весь экран. Теперь, если я добавлю новый фрагмент, мне бы хотелось, чтобы каждый фрагмент заполнял половину экрана. Как я могу это сделать? enter image description hereДинамический размер фрагмента в андроиде

Я пробовал эту компоновку и программно добавлял фрагменты. Но это не сработает.

<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="tech.test.org.game.Game$PlaceholderFragment"> 


    <RelativeLayout 
     android:id="@+id/relativeLayout" 
     android:layout_width="match_parent" 
     android:layout_height="0px" 
     android:layout_weight="50"> 


    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/relativeLayout2" 
     android:layout_width="match_parent" 
     android:layout_height="0px" 
     android:layout_below="@+id/relativeLayout" 
     android:layout_weight="50" 
     > 
     </RelativeLayout> 

</RelativeLayout> 

Спасибо.

ответ

3

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

<RelativeLayout 
     android:id="@+id/relativeLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="0.5" 
    > 

    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/relativeLayout2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="0.5" 
     android:visibility="gone" > 

     </RelativeLayout> 

</LinearLayout> 

при добавлении второго фрагмента сделать программно установить Layout2 видимость видимой.

findViewById(R.id.relativeLayout2).setVisibility(View.VISIBLE); 
2

Использование Линейная планировка вместо относительного расположения и установить макет в

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:weightSum="100" > 

    <LinearLayout 
     android:id="@+id/layout1" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="100" > 

     <fragment 
      android:id="@+id/fragment1" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      > 
     </fragment> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/layout2" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="50" 
     android:visibility="gone" > 

     <fragment 
      android:id="@+id/fragment2" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      > 
     </fragment> 
    </LinearLayout> 

</LinearLayout> 

И когда вы добавляете второй фрагмент сделать программно установить Layout2 видимость видимой и Layout1 вес 50

LinearLayout layout1 = (LinearLayout) findViewById(R.id.layout1); 
android.widget.LinearLayout.LayoutParams par = layout1.getLayoutParam(); 
par.weight =50; 
Смежные вопросы