Воспроизведение Honeycomb GMail UI с фрагментами - PullRequest
7 голосов
/ 28 апреля 2011

Я пытаюсь воспроизвести Honeycomb GMail UI с фрагментами и не могу. Вот что я хочу

Исходное состояние:

+--------+---------------+
|        |               |
|Accounts|   Folders     |
|        |               |
+--------+---------------+

после выбора папки:

+--------+---------------+
|        |               |
|Folders |   Items       |
|        |               |
+--------+---------------+

, где Счета, Папки и Предметы являются фрагментами. (Очевидно, кнопка возврата должна перейти в исходное состояние)

Я попробовал следующий макет:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="horizontal" 
   android:id="@+id/root">

   <FrameLayout
     android:id="@+id/left_pane" android:layout_weight="1"
     android:layout_width="0px" android:layout_height="match_parent" />

   <FrameLayout
      android:id="@+id/right_pane" android:layout_weight="1.6"
      android:layout_width="0px" android:layout_height="match_parent" />
</LinearLayout>

К сожалению, это не работает, потому что я не могу переместить свой фрагмент Папок с правой панели на левую (фрагмент можно добавить только один раз). Вместо этого я могу создавать новые папки, но это довольно расточительно, требует тщательного управления состоянием (особенно когда нажата кнопка «назад») и не выглядит так, как я хочу.

Я пытался использовать 3 FrameLayout (слева, в середине, справа с весами 1, 1.6, 2.56), но я не могу заставить FrameLayout свернуться, когда фрагмент не показан. Любая помощь очень ценится

Ответы [ 3 ]

6 голосов
/ 09 июня 2011

Использование трехкадрового макета, предложенного постом Николаса, прекрасно работает в моем приложении.Чтобы сохранить правильные соотношения, вам может потребоваться динамическое изменение весов макета (хотя я полагаю, что этого можно было бы не делать).Я использую этот вспомогательный метод для обработки всей этой логики.Обратите внимание, что для этого нужна пара помощников;в общем, должно быть понятно, что эти люди должны делать из своего имени, поэтому я не разместил их здесь.Одна вещь, однако, в том, что у меня есть массив элементов, который содержит все держатели фреймов, поэтому этот метод может автоматически скрывать все, что не нужно.--randy

2 голосов
/ 03 июня 2011

Я думаю, вы могли бы использовать 3 FrameLayouts и скрыть неиспользуемый кадр.Поэтому изначально рамка Предметов скрыта.Когда элемент выбран во фрейме «Папки», фрейм «Учетные записи» скрывается, а слава «Предметы» становится видимой.Фрейм Папки (или основное действие) должен был бы перехватить кнопку «Назад», чтобы скрыть фрейм «Элементы» и сделать видимым фрейм «Учетная запись».

1 голос
/ 25 февраля 2012

я думаю, что вы можете получить представление от StackScrollView для Android ..

https://github.com/raweng/Android-StackScrollview

...