我想要做一些從一開始我已經知道實現起來相當困難,並且在屏幕底部放置導航抽屜菜單的頁腳。在屏幕底部設置Android導航抽屜菜單頁腳
事實上,當抽屜的列表視圖項目全部在屏幕上可見並且頁腳應該位於最後一個項目下方時,我需要頁腳完全位於屏幕的底部屏幕和滾動條出現(正常行爲)。
對於我使用的是addFooterView方法在接下來的方式
ViewGroup footer = (ViewGroup)inflater.inflate(R.layout.testme_drawer_footer, mDrawerList, false);
mDrawerList.addFooterView(footer, null, false);
哪裏testme_drawer_footer是下一個佈局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/footer_menu_facebook"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="start"
android:orientation="horizontal">
<TextView
android:id="@+id/drawer_footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="#8d3169"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:textColor="#fff"
android:textSize="12sp"/>
</LinearLayout>
沒有做任何事情的addFooterView只是表現正常的方式,如果元素全部在屏幕上可見,並且底部留下很多空白空間,頁腳僅放置在最後一個元素下面(對於我試圖達到的效果不好)。
我試着在徒勞無功地掙扎我的頭一會兒我能得到的東西非常接近我後需要不同的StackOverflow的帖子很多建議,這是下一個:
我給所有的列表視圖元素一個固定的高度和相同的標題所以最後我計算頁腳高度與screenHeight - statusBarHeight - actionBarHeight - drawerHeaderHeight - listViewElementHeight * numberOfElements在接下來的方式:
ViewGroup footer = (ViewGroup)inflater.inflate(R.layout.testme_drawer_footer, mDrawerList, false);
int screenHeight = GeneralUtils.getScreenHeight(oActivity);
int statusBarHeight = GeneralUtils.getStatusBarHeight(oActivity);
int actionBarHeight = GeneralUtils.getActionBarHeight(oActivity);
int drawerHeaderHeight = GeneralUtils.dp2px(60, oActivity);
int menuItemHeight = drawerHeaderHeight;
int totalItemsHeight = menuItemHeight*(endItem-startItem+1);
int footerHeight = screenHeight - statusBarHeight - actionBarHeight - drawerHeaderHeight - totalItemsHeight;
footer.setMinimumHeight(footerHeight);
mDrawerList.setFooterDividersEnabled(true);
mDrawerList.addFooterView(footer, null, false);
但它是最有可能的一些的高度測量方法並不十分精確,有在所有測試過的設備中,某些像素的差異並不相同。
我知道這不是最好的辦法,實際上我不喜歡它,我不喜歡爲wrap_content設置固定高度的抽屜頭和元素,我不喜歡計算整體高度這種方式,但無法找到任何其他工作方式來實現這一目標。
任何幫助?
在此先感謝!
這是我設置在所有活動中的ListView方式:
<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">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llMainMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:orientation="horizontal">
//MAIN CONTENT
<ListView
android:id="@+id/left_drawer"
android:layout_width="@dimen/navigation_drawer_width_phone"
android:layout_height="match_parent"
android:layout_gravity="left|start"
android:headerDividersEnabled="true"
android:background="#ffeeeeee"/>
</android.support.v4.widget.DrawerLayout>
這可能有幫助https:// stackoverflow。com/questions/30543605/how-to-add-footer-to-navigationview-android-support-design-library – seon
感謝您的回覆和時間@seon,我終於解決了我的問題,就像我在下面描述的那樣。 –