Измените одиночный FrameLayout, заполняющий родительский элемент, на двойной / разделенный с переносом первого в содержимое - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть двухпанельная компоновка с использованием FrameLayouts, каждая из которых эффективно заполняет высоту экрана (за исключением полей):

dual pane

Расположение правильного FrameLayout выглядит следующим образом:

<LinearLayout
        android:id="@+id/details_frame"
        android:layout_width="0px"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:orientation="vertical">

    <FrameLayout android:id="@+id/details_frag" 
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:layout_weight="1"
            android:paddingTop="48dp"/>

На определенном выделении в левом фрагменте, хотя я хочу разделить правый FrameLayout на два, чтобы я мог поместить разные фрагменты в каждый, при этом верхний фрейм переносится в содержимое, а нижний занимает все оставшееся пространство следующим образом:

Split right pane

Я экспериментировал с добавлением нового FrameLayout ниже существующего, а затем играл с весом, ростом, и это ближе к тому, что я хочу, за исключением того факта, что фрагмент, который я хочу поместить в detaisl_frag_lower, является ListFragment и когда на экране больше записей, чем помещается, список заканчивается заполнением за пределами экрана, а не прокруткой в ​​доступной области:

    <FrameLayout android:id="@+id/details_frag" 
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:layout_weight="1"
            android:paddingTop="48dp"/>
    <FrameLayout android:id="@+id/details_frag_lower" 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"/>

Редактировать Кстати, я раздуваю фрагменты в каждом FrameLayout

list extending below screen Заранее спасибо. Питер.

1 Ответ

1 голос
/ 03 ноября 2011

Я бы изменил все это на LinearLayout. Layout_weight заполнит пространство для вас. Вы можете показать / скрыть красную панель, найдя ее с идентификатором, затем установите pane.setVisibility (View.VISIBLE) (или установите View.GONE)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        android:orientation="horizontal">
    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="#ffff00"
            android:orientation="vertical"
            android:id="@+id/details_frag">
    <!-- Left pane content -->
    </LinearLayout>
    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:background="#00ff00"
            android:orientation="vertical">
    <!-- Right pane content -->
        <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="80dp"
                android:orientation="vertical"
                android:background="#ff0000"
                android:visibility="gone"
                android:id="@+id/details_frag_upper">
            <!-- Initially hidden.  Fill with whatever on left pane click -->
        </LinearLayout>
        <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:background="#0000ff"
                android:id="@+id/details_frag_lower"
                android:layout_weight="1">
            <!-- Initially hidden.  Fill with whatever on left pane click -->
        </LinearLayout>

    </LinearLayout>

</LinearLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...