1

我已經創建了一個導航抽屜,當用戶單擊hamburger圖標時,它會打開抽屜。我需要在drawer中添加一個關閉按鈕。這是我需要實現的。如何在導航抽屜的右上角添加十字按鈕

enter image description here

我都試過了,短打無法在Drawer Layout添加圖像。這是我的代碼添加Navigation Drawer。請引導我如何在抽屜右上角添加圖像。

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:id="@+id/base_layout"> 

    <include layout="@layout/header_layout"/> 


</LinearLayout> 


    <android.support.design.widget.NavigationView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:id="@+id/navigation_view" 
     android:layout_gravity="start" 
     android:background="@drawable/sidebg" 
     app:menu="@menu/drawer_menu" 
     app:itemTextColor= "#ffffff" 
     app:headerLayout="@layout/navigation_drawer_header" 
     android:gravity="bottom|left" 
     android:dividerHeight="0dp" 
     app:itemIconTint="@android:color/white" 
     > 

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




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

回答

0

添加點擊監聽器X圖標的ImageView的。

imageView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Drawer.closeDrawer(Gravity.LEFT); 
     } 
    }); 

要添加你想要做一個排序自定義視圖的圖標

<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" > 

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="android-coding.blogspot.com" /> 
</RelativeLayout> 

<LinearLayout 
    android:id="@+id/drawer" 
    android:layout_width="200dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:orientation="vertical" 
    android:background="@android:color/background_dark" 
    android:padding="5dp" > 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="android-coding"/> 
    <ImageView 
     android:id="@+id/imageview" 
    android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="yourdrawable" 
     /> 
</LinearLayout> 

My source

Same as your question.

+0

但如何添加圖像視圖在導航抽屜 – Kirmani88

+0

啊是的看到更新。可能還有其他的方式來做自定義視圖。這是您需要的關鍵字。 – StarWind0

1

ActionBarDrawerToggle將解決你的問題:

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerToggle = new ActionBarDrawerToggle(
       this,     /* host Activity */ 
       mDrawerLayout,   /* DrawerLayout object */ 
       R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */ 
       R.string.drawer_open, /* "open drawer" description */ 
       R.string.drawer_close /* "close drawer" description */ 
       ) { 

      /** Called when a drawer has settled in a completely closed state. */ 
      public void onDrawerClosed(View view) { 
       super.onDrawerClosed(view); 
       getActionBar().setTitle(mTitle); 
      } 

      /** Called when a drawer has settled in a completely open state. */ 
      public void onDrawerOpened(View drawerView) { 
       super.onDrawerOpened(drawerView); 
       getActionBar().setTitle(mDrawerTitle); 
      } 
     }; 

     // Set the drawer toggle as the DrawerListener 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 

     getActionBar().setDisplayHomeAsUpEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 

替代方式:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.v4.widget.DrawerLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 


     <!--your layout here --> 
    </android.support.v4.widget.DrawerLayout> 


    <ImageView 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:id="@+id/im_close_btn" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:visibility="gone" 
     android:src="@drawable/ic_close"/> 
</RelativeLayout> 
+0

謝謝,但我仍然無法理解,如何在右上角添加'X'圖像 – Kirmani88

+0

如果您想使用ActionBarDrawerToggle使其RTL將解決您的問題。另一種方法是在角落放置一個關閉按鈕,並在抽屜打開時使其可見。 – Amir

+0

謝謝,讓我試試另一種方法 – Kirmani88

0
navigation_drawer_header.xml 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/nav_header_height" 
    android:background="@drawable/side_nav_bar" 
    android:gravity="bottom" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark"> 
    <Button 
     android:id="@+id/closeButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="X" 
     android:layout_gravity="right"/> 
    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     app:srcCompat="@android:drawable/sym_def_app_icon" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:text="Android Studio" 
     android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="[email protected]" /> 

</LinearLayout> 

Java代碼的

View headerView = navigationView.getHeaderView(0); 
     Button closeButton = (Button) headerView.findViewById(R.id.closeButton); 

     closeButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       drawer.closeDrawer(Gravity.LEFT); 
      } 
     }); 
+0

@ Kirmani88試試這個答案... –

0

我相信你想知道如何添加 「X」 按鈕。那麼,您是否在您的NavigationView中看到下面的行:

app:headerLayout="@layout/navigation_drawer_header" 

這是您的抽屜的頁眉佈局。打開此佈局並將其放入其中。就如此容易。