1

ナビゲーション・ドロワーを作成しました。ユーザーがhamburgerアイコンをクリックすると、ドロワーが開きます。 drawerに閉じるボタンを追加する必要があります。これは私が実装する必要があるものです。私が試してみました ナビゲーション・ドロワーの右上隅にあるクロス・ボタンの追加方法

enter image description here

は、 Drawer Layoutに画像を追加することができませんでしバント。これは私のコード Navigation Drawerを追加することです。 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で問題を解決してください。別の方法は、コーナーにクローズボタンを配置し、Drawer Openでそれを見えるようにすることです。 – 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

私は、あなたが "×" ボタンを追加する方法を知りたいと考えています。さて、NavigationViewで下の行が表示されますか:

app:headerLayout="@layout/navigation_drawer_header" 

これは引き出しのヘッダーレイアウトです。このレイアウトを開いてImageViewを配置します。それと同じくらい簡単です。

関連する問題