Intereting Posts
Phonegap 2.4.0 с Android 4.2 – странное поведение двойного клика Почтовый многопользовательский запрос с Android SDK Как набрать номер со специальными символами, используя намерение Android? Добавление какого-то эффекта, например, эха в звуковую дорожку с помощью AudioTrack android Болезненная резьба в андроиде Исключение nullpointer в oncreateView () фрагмента Случаи использования DropBoxManager? NDK – Как использовать сгенерированную библиотеку .so в другом проекте Android поворачивает растровое изображение без копирования Android: отключите ленивую загрузку списка Я использую listview add / remove footer для перекрестного приложения listview в версии Android 4.3? Конструктор Intent не определен Пользовательское уведомление Android 4.0, например, google music Как сохранить положительные / отрицательные кнопки DialogFragment над мягкой клавиатурой Android Alpha Animation: альфа-значение возвращается к старому значению после завершения анимации

Нижняя компоновка в навигационном ящике Android

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

<LinearLayout android:id="@+id/left_drawer_layout" 

Я хотел бы добавить нижний макет, который не зависит от прокрутки ListView. Я попробовал разные версии, где добавить нижний код макета, но ничего не происходит. Мне нужен дополнительный глаз, пожалуйста. Спасибо.

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="fill_parent" android:layout_height="match_parent" android:background="@android:color/white"> <LinearLayout android:layout_width="match_parent" android:layout_height="fill_parent" android:orientation="vertical"> <include android:id="@+id/toolbar" layout="@layout/toolbar”/> <!-- Framelayout to display Fragments --> <FrameLayout android:id="@+id/frame_container" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> <!-- Listview to display slider menu --> <LinearLayout android:id="@+id/left_drawer_layout" android:layout_width="@dimen/navigation_drawer_max_width" android:layout_height="match_parent" android:layout_gravity="start" android:orientation="vertical"> <FrameLayout android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/list_background"> <Button android:id="@+id/refreshBtn" android:layout_width="match_parent" android:layout_height="48dp" android:text="@string/refresh" android:visibility="gone" /> <EditText android:id="@+id/searchMenuTxt" android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/list_background_pressed" android:drawableLeft="@drawable/search_web" android:drawablePadding="@dimen/activity_horizontal_margin" android:drawableStart="@drawable/search_web" android:focusable="false" android:focusableInTouchMode="true" android:hint="@string/search" android:paddingLeft="8dp" android:singleLine="true" android:textColorHint="@android:color/darker_gray" android:textSize="@dimen/text_size_14"></EditText> <Button android:id="@+id/clearBtn" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="right|center" android:background="@drawable/mob_clear" android:paddingRight="8dp" android:visibility="invisible" /> </FrameLayout> <LinearLayout android:id="@+id/left_drawer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id="@+id/activeChatsList" android:layout_width="@dimen/navigation_drawer_max_width" android:layout_height="wrap_content" android:layout_gravity="start" android:background="@color/list_background_pressed" android:choiceMode="singleChoice" android:divider="@drawable/list_divider" android:dividerHeight="1dp" android:fadeScrollbars="false" android:fastScrollEnabled="false" /> <ListView android:id="@+id/drawerListView" android:layout_width="@dimen/navigation_drawer_max_width" android:layout_height="match_parent" android:layout_gravity="start" android:background="@drawable/list_selector" android:choiceMode="singleChoice" android:divider="@drawable/list_divider" android:dividerHeight="1dp" android:drawSelectorOnTop="true" android:fastScrollEnabled="false" android:minHeight="250dp" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_alignParentBottom="true"> <Button android:id="@+id/CancelButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=“Profile" /> > </LinearLayout> </LinearLayout> </LinearLayout> </android.support.v4.widget.DrawerLayout> 1 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="fill_parent" android:layout_height="match_parent" android:background="@android:color/white"> <LinearLayout android:layout_width="match_parent" android:layout_height="fill_parent" android:orientation="vertical"> <include android:id="@+id/toolbar" layout="@layout/toolbar”/> <!-- Framelayout to display Fragments --> <FrameLayout android:id="@+id/frame_container" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> <!-- Listview to display slider menu --> <LinearLayout android:id="@+id/left_drawer_layout" android:layout_width="@dimen/navigation_drawer_max_width" android:layout_height="match_parent" android:layout_gravity="start" android:orientation="vertical"> <FrameLayout android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/list_background"> <Button android:id="@+id/refreshBtn" android:layout_width="match_parent" android:layout_height="48dp" android:text="@string/refresh" android:visibility="gone" /> <EditText android:id="@+id/searchMenuTxt" android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/list_background_pressed" android:drawableLeft="@drawable/search_web" android:drawablePadding="@dimen/activity_horizontal_margin" android:drawableStart="@drawable/search_web" android:focusable="false" android:focusableInTouchMode="true" android:hint="@string/search" android:paddingLeft="8dp" android:singleLine="true" android:textColorHint="@android:color/darker_gray" android:textSize="@dimen/text_size_14"></EditText> <Button android:id="@+id/clearBtn" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="right|center" android:background="@drawable/mob_clear" android:paddingRight="8dp" android:visibility="invisible" /> </FrameLayout> <LinearLayout android:id="@+id/left_drawer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id="@+id/activeChatsList" android:layout_width="@dimen/navigation_drawer_max_width" android:layout_height="wrap_content" android:layout_gravity="start" android:background="@color/list_background_pressed" android:choiceMode="singleChoice" android:divider="@drawable/list_divider" android:dividerHeight="1dp" android:fadeScrollbars="false" android:fastScrollEnabled="false" /> <ListView android:id="@+id/drawerListView" android:layout_width="@dimen/navigation_drawer_max_width" android:layout_height="match_parent" android:layout_gravity="start" android:background="@drawable/list_selector" android:choiceMode="singleChoice" android:divider="@drawable/list_divider" android:dividerHeight="1dp" android:drawSelectorOnTop="true" android:fastScrollEnabled="false" android:minHeight="250dp" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_alignParentBottom="true"> <Button android:id="@+id/CancelButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=“Profile" /> > </LinearLayout> </LinearLayout> </LinearLayout> </android.support.v4.widget.DrawerLayout> 1 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="fill_parent" android:layout_height="match_parent" android:background="@android:color/white"> <LinearLayout android:layout_width="match_parent" android:layout_height="fill_parent" android:orientation="vertical"> <include android:id="@+id/toolbar" layout="@layout/toolbar”/> <!-- Framelayout to display Fragments --> <FrameLayout android:id="@+id/frame_container" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> <!-- Listview to display slider menu --> <LinearLayout android:id="@+id/left_drawer_layout" android:layout_width="@dimen/navigation_drawer_max_width" android:layout_height="match_parent" android:layout_gravity="start" android:orientation="vertical"> <FrameLayout android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/list_background"> <Button android:id="@+id/refreshBtn" android:layout_width="match_parent" android:layout_height="48dp" android:text="@string/refresh" android:visibility="gone" /> <EditText android:id="@+id/searchMenuTxt" android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/list_background_pressed" android:drawableLeft="@drawable/search_web" android:drawablePadding="@dimen/activity_horizontal_margin" android:drawableStart="@drawable/search_web" android:focusable="false" android:focusableInTouchMode="true" android:hint="@string/search" android:paddingLeft="8dp" android:singleLine="true" android:textColorHint="@android:color/darker_gray" android:textSize="@dimen/text_size_14"></EditText> <Button android:id="@+id/clearBtn" android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="right|center" android:background="@drawable/mob_clear" android:paddingRight="8dp" android:visibility="invisible" /> </FrameLayout> <LinearLayout android:id="@+id/left_drawer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id="@+id/activeChatsList" android:layout_width="@dimen/navigation_drawer_max_width" android:layout_height="wrap_content" android:layout_gravity="start" android:background="@color/list_background_pressed" android:choiceMode="singleChoice" android:divider="@drawable/list_divider" android:dividerHeight="1dp" android:fadeScrollbars="false" android:fastScrollEnabled="false" /> <ListView android:id="@+id/drawerListView" android:layout_width="@dimen/navigation_drawer_max_width" android:layout_height="match_parent" android:layout_gravity="start" android:background="@drawable/list_selector" android:choiceMode="singleChoice" android:divider="@drawable/list_divider" android:dividerHeight="1dp" android:drawSelectorOnTop="true" android:fastScrollEnabled="false" android:minHeight="250dp" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_alignParentBottom="true"> <Button android:id="@+id/CancelButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=“Profile" /> > </LinearLayout> </LinearLayout> </LinearLayout> </android.support.v4.widget.DrawerLayout> 

Вы можете получить основную идею из этого фрагмента кода. И андроид теперь имеет встроенную функциональность для ящика меню. То, что вы пытаетесь сделать, – это старый подход. Actionbar sherlock устарел. Поэтому я бы рекомендовал вам перейти на AppCompat. Следующим приложением Appcompat является код для компоновки ящика меню вместе с нижним колонтитулом.

drawer_fragment.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res/com.focial" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" > <LinearLayout android:id="@+id/footer" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_gravity="bottom" android:clickable="true" android:background="@android:color/black" android:orientation="vertical"> <!-- any addition stuff you want in yoour footer layout --> </LinearLayout> <ListView android:id="@+id/drawer_list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/footer" android:choiceMode="singleChoice" android:dividerHeight="1dp" /> </RelativeLayout> 

Activity_home.xml (где вы хотите включить / показать ящик)

 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" > <FrameLayout android:id="@+id/realcontent" android:layout_width="match_parent" android:layout_height="match_parent" /> <fragment android:id="@+id/navigation_drawer" android:name="com.focial.fragment.NavigationDrawerFragment" android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent" android:layout_gravity="start" /> 

HomeActivity.java

 private NavigationDrawerFragment mNavigationDrawerFragment; private ArrayList<DrawerItem> drawerItems; private DrawerLayout drawerLayout; protected void initUIComponents() { drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); mNavigationDrawerFragment.setUp(R.id.navigation_drawer, drawerLayout, drawerItems); } @Override public void onNavigationDrawerItemSelected(int itemlabelId) { FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction().replace(R.id.realcontent, CustomFragmentManager.newInstance(itemlabelId)).commit(); } 

NavigationDrawerFragment.java

 View rootView = (RelativeLayout) inflater.inflate(R.layout.layout_fragment_drawer, container, false); ListView mDrawerListView = (ListView) rootView.findViewById(R.id.drawer_list); LinearLayout footerView = (LinearLayout) rootView.findViewById(R.id.footer); 

В вашем левом ящике не обязательно должен быть LinearLayout , это может быть что-то вроде:

 <RelativeLayout android:id="@+id/left_drawer_layout" android:layout_width="@dimen/navigation_drawer_max_width" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/drawer_footer" android:layout_gravity="start" android:orientation="vertical"> <!-- YOUR PREVIOUS LAYOUT --> </LinearLayout> <LinearLayout android.id="@+id/drawer_footer" android:layout_width="match_parent" android:layout_alignParentBottom="true" android:layout_height="100dp"> <!-- YOUR FOOTER WITH layout_alignParentBottom --> </LinearLayout> </RelativeLayout> 

Таким образом, ваш нижний колонтитул всегда будет на нижней части вашего левого ящика.

Вы можете использовать этот ящик в своем проекте или какой-то макет, как то, что используется в этом проекте https://github.com/neokree/MaterialNavigationDrawer

Проект имеет метод addBottomSection для компоновки нижнего колонтитула

Вы можете увидеть пример этого проекта в этом apk: https://github.com/neokree/MaterialNavigationDrawer/blob/master/example.apk

Потому что ваш android:layout_height="match_parent" , поэтому он принимает всю высоту, оставшуюся в scree, и выталкивает нижний макет из экрана.
Вы можете попробовать следующее:

 <LinearLayout android:id="@+id/left_drawer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="vertical" > <ListView android:id="@+id/activeChatsList" /> <ListView android:id="@+id/drawerListView" /> </LinearLayout> <Button android:id="@+id/CancelButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="“Profile" /> </LinearLayout> 

Кроме того, я предлагаю вам использовать 1 просмотр списка с multi viewType в адаптере вместо 2 отдельных списков, потому что если первый прокручиваемый, то второй не будет отображаться или если появится 2-й, это означает, что 1-й не нужен Для прокрутки, поэтому бессмысленно быть списком.
Хоп это помогает.

Лучший способ – создать еще один макет для нижнего колонтитула и добавить этот макет в нижний колонтитул вашего списка.

 listView.addFooterView(R.layout.<your footer layout>); 

Это только предположение. Я добавляю это как свой ответ, потому что у меня нет достаточной репутации, чтобы добавить комментарий к другим сообщениям, извините. Я думаю, что это уже разрешено в SO. Пожалуйста, ознакомьтесь с приведенной ниже ссылкой. Как разместить элементы списка в нижней части списка в навигационном ящике, таком как Foursquare

Вы можете использовать библиотеку ActionBarSherlock. Я думаю, что это так полезно.

Вы должны использовать компоновку фрейма после тега управления ящиком.

Поместите все элементы управления в макет рамки.