2013-04-25 2 views
0

У меня есть активность, которая отображает два фрагмента на экране, один под другим. Верхний фрагмент - это пользовательский интерфейс для активности, а второй - пользовательский ListView. У меня есть два фрагмента, которые могут заполнять верхний слот, каждый разный размер. ListView используется для обоих.Android расстояние между двумя фрагментами на одном экране

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

Что я хотел бы узнать, если есть способ динамически изменять размер зарезервированной области фрагмента при загрузке фрагмента или если я застрял с этим уродливым разрывом.

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

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

<TabHost 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
     <TabWidget 
      android:id="@android:id/tabs" 
      android:orientation="horizontal" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="0" 
      /> 

     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="0dp" 
      android:layout_height="0dp" 
      android:layout_weight="0"/> 

     <FrameLayout 
      android:id="@+android:id/realtabcontent1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1"/> 
     <FrameLayout 
      android:id="@+android:id/realtabcontent2" 
      android:layout_width="fill_parent" 
      android:layout_height="0dp" 
      android:layout_weight="2" /> 
    </LinearLayout> 
</TabHost> 
</LinearLayout> 
+0

Две части соответствуют двум «FrameLayouts»? Кроме того, используйте '@ + id/theId' для non sdk ids (realtabcontent1 и realtabcontent2 не находятся в sdk). – Luksprog

ответ

0

Я понял это. Высота макета как FrameLayouts, размещающих фрагменты, должна быть установлена ​​в android:layout_height="wrap_content", а линия layout_weight должна быть удалена. Затем интервал обрабатывается динамически на фрагменте, который загружается в этот FrameLayout.

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