2015-10-21 17 views
10

Tôi đang theo dõi bài đăng "Android design library NavigationView with footer" để thêm các nút ở cuối NavigationView. Vấn đề là chỉ có NavigationView mới xuất hiện và nó chiếm toàn bộ chiều cao màn hình.Cách thêm các nút chân trang trong NavigationView

Dưới đây là cách bố trí của tôi:

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <!-- Activity here --> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/navigation_view" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start"> 

     <android.support.design.widget.NavigationView 
      android:id="@+id/navigation_menu_view" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_gravity="top" 
      app:menu="@menu/menu_drawer"/> 

     <android.support.design.widget.NavigationView 
      android:id="@+id/navigation_footer_view" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="bottom" 
      app:menu="@menu/menu_drawer_footer"/> 

    </android.support.design.widget.NavigationView> 

</android.support.v4.widget.DrawerLayout> 

Dưới đây là kết quả:

enter image description here

Làm thế nào tôi có thể sửa lỗi này?

+0

Đó blog là một vài tháng tuổi và các thư viện hỗ trợ thiết kế đã có một vài thông tin cập nhật trong thời gian đó. Đặc biệt NavigationView giờ sử dụng RecyclerView bên trong thay vì một ListView. Có thể thủ thuật này không hoạt động nữa. Hãy dùng thử bằng cách sử dụng một thư viện cũ hơn và xem có thay đổi gì không. – Brucelet

+0

@Brucelet, bạn có biết một giải pháp khác không? –

+1

Xác nhận, trên 23.0.1 mẹo này hoạt động, trên 23.1 không hoạt động –

Trả lời

11

Trọng lượng và lợi nhuận có thể cần phải được thêm vào hoặc chỉnh tùy thuộc vào có bao nhiêu mục bạn muốn trên và dưới, nhưng điều này nên được những gì bạn đang tìm kiếm:

<android.support.design.widget.NavigationView 
    android:id="@+id/navigation_drawer_container" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:weightSum="10"> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/navigation_drawer" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_gravity="top" 
     android:layout_weight="8" 
     app:menu="@menu/drawer" /> 

    <android.support.design.widget.NavigationView 
     android:id="@+id/navigation_drawer_bottom" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_weight="2" 
     android:layout_gravity="bottom" 
     app:menu="@menu/drawer_footer" /> 
    </LinearLayout> 
</android.support.design.widget.NavigationView> 

Hope this helps :)

+5

Bạn cần đặt 'ứng dụng: độ cao = 0dp' thành NavigationView bên trong khác footer sẽ có nền gradient lạ. Trừ khi có một cách để loại bỏ hiệu ứng cuộn của chân trang, tôi sử dụng TextViews đơn giản ở chân trang. Tuy nhiên, đó là một giải pháp tốt. – headsvk

13

Câu trả lời đơn giản nhất là thêm nút bên trong bố cục ngăn kéo và đặt trọng số ở dưới cùng trong navigationview.xml

dễ như vậy !!! đây là mã.

<android.support.design.widget.NavigationView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/navigation" 
    android:layout_width="200dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:headerLayout="@layout/navigation_header" 
    app:menu="@menu/menu_navigation" 
    android:layout_alignParentTop="true"> 

    <Button 
     android:id="@+id/btn_sing_in" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:text="@string/sign_in" 
     android:layout_gravity="bottom" 
     /> 
</android.support.design.widget.NavigationView> 

add button inside Drawer layour

+0

nút đang ẩn các mục nagivation – Andrain

+0

cuộn lên để xem nó –

Các vấn đề liên quan