2017-02-14 10 views

答えて

1

ありがとうnav_header_main.xmlのXMLコードです:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/nav_header_height" 
    android:background="@drawable/side_nav_bar" 
    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"> 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageButton" 
     android:layout_gravity="right" /> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="bottom"> 

     <ImageView 
      android:id="@+id/imageView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingTop="@dimen/nav_header_vertical_spacing" 
      android:src="@android:drawable/sym_def_app_icon" /> 
    </LinearLayout> 

</LinearLayout> 

NavigationViewが初期化された後、あなたはMainActivityのonCreate()からこのボタンにアクセスすることができます。

ImageButton ib = (ImageButton)navigationView.findViewById(R.id.imageButton); 
ib.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View view){ 
     //DO YOUR CODE 
    } 
}); 
+0

このコードを下に入れます 'NavigationView navigationView =(NavigationView)findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); ' 実行すると、強制的に閉じるようになります –

+0

その作業に感謝します! –

+0

これはサンプルアンドリドスタジオ2.3で動作しません – Webserveis

-2

画像ボタンのIDを取得します。

ImageButton button = (ImageButton)findViewById(R.id.imageButton); 
button.setOnClickListener(new View.OnClickListener(){ 
@Override 
public void onClick(View view){ 
Intent intent = new Intent(getApplicationContext(),YourClass.class); 
startActivity(intent,0); 
} 
}); 
1

私は自動でnavigationView.findViewByIdをテストするには、Android stduioでサンプルを生成し、正常に動作しません。

その他のソリューション

NavigationView navigationView = findViewById(R.id.nav_view); 
navigationView.setNavigationItemSelectedListener(this); 

ImageButton ib = (ImageButton)navigationView.getHeaderView(0).findViewById(R.id.imageButton); 
ib.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View view){ 
     //DO YOUR CODE 
    } 
}); 
関連する問題