Нижняя позиция в DrawerLayout
Я пытаюсь сделать то же самое, что @lnamdar задал в этом вопросе ( макет ящика с фиксированным пунктом меню). Я пытаюсь получить лучшее объяснение их решения.
Я пытаюсь это:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/transparent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/black"
android:text="This is the footer text"/>
</RelativeLayout>
<!-- The navigation drawer -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:background="@android:color/black"/>
Но это приводит к тому, что представление списка не отображается, и при переключении открытия / закрытия единственное, что я вижу, это нижний колонтитул. Я попытался поместить listView и textView нижнего колонтитула в RelativeLayout, но затем происходит сбой ClassCastException в параметрах Layout, используемых в классе Layer Drawer.
Спасибо за вашу помощь!
1 ответ
Их попытка с RelativeLayout дала неожиданный результат, так как он не был внутри фрейма контента. Объяснение довольно простое, поскольку RelativeLayout является родителем ListView
которые удерживают пункты меню, мы перемещаем гравитацию к нему, вместо этого используя ListView
с той же силой тяжести. Вот что я сделал:
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?android:attr/activatedBackgroundIndicator"
android:gravity="center_vertical"
android:id="@+id/logout_item"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="@string/logout"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textColor="#fff" />
</FrameLayout>
</RelativeLayout>
Не забудьте запустить HierarchyViewer, чтобы избавиться от ненужных ViewGroup.