2016-04-01 7 views
0

こんにちは、私はこの問題が既に尋ねられていることを知っています。しかし、検索されたので、このトピックに関しては、私の解決策のどれも私のためには機能しません。 私はgradle - compile 'de.hdodenhof:circleimageview:1.3.0' をコンパイルしました。私は私のnavigationViewについてheader.xmlCircleImageViewをNavigationView Drawerでクリック可能にするには

<de.hdodenhof.circleimageview.CircleImageView 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/profile_image" 
    android:layout_width="80dp" 
    android:layout_height="80dp" 
    app:border_color="#FF000000" 
    android:layout_marginLeft="24dp" 
    android:layout_centerVertical="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_margin="@dimen/activity_vertical_margin" 
    android:layout_marginStart="@dimen/activity_vertical_margin" 
    android:layout_marginBottom="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:src="@drawable/avatar" 
    android:foreground="?attr/selectableItemBackground" 
    android:onClick="onClick" 
    android:clickable="true" /> 

を作成しました。私のjavaファイルactivity_main.java

<!--NAVIGATION DRAWER--> 
<android.support.design.widget.NavigationView 
    android:id="@+id/navigation_view" 
    android:layout_height="match_parent" 
    android:layout_width="wrap_content" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/header" 
    app:menu="@menu/navigation_drawer" 
    app:itemIconTint="@color/colorTextNavigationView" /> 

私はonClickListenerを試してみましたまだそれは私のプログラムを停止します - NullPointerExceptionが(私のcircleImageView findViewByIdをマッピングされません).AND私はサークルの画像をクリックした場合でも、setNavigationItemSelectedListenerはインテントを立ち上げたことはありません。

mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(MenuItem menuItem) { 
      menuItem.setChecked(true); 
      mDrawerLayout.closeDrawers(); 

      int id = menuItem.getItemId(); 
      switch (id){ // INTENTS HERE} 

}

header

このクリッカブルを作るための方法はありますか?

答えて

2

まず、あなたが

ImageView profileimage = (ImageView)headerLayout.findViewById(R.id.yourImage);を使ってImageViewのを取得することができますheaderLayoutから、その後

View headerLayout = navigationView.getHeaderView(0); 

、このような何かを行うことができ、あなたが膨張するために使用しているheaderlayoutにアクセスする必要が

クリックすると設定できます。

0

これはactvityで

(ここLayout_wwがwrap_contentとして幅&高さを表す)

<?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="200dp" 
    android:background="@drawable/nav_header" 
    android:gravity="center" 
    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"> 

    <de.hdodenhof.circleimageview.CircleImageView 
     android:id="@+id/navimgProfile" 
     android:layout_width="@dimen/eighty_dp" 
     android:layout_height="@dimen/eighty_dp" 
     android:layout_gravity="center_horizontal" 
     app:civ_border_color="@color/white" /> 

    <TextView 
     android:id="@+id/nav_profile_name" 
     style="@style/Layout_mw" 
     android:gravity="center" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:text="Android Studio" /> 

    <TextView 
     android:id="@+id/pro_location" 
     style="@style/Layout_mw" 
     android:layout_marginTop="@dimen/ten_dp" 
     android:gravity="center" 
     android:text="[email protected]" /> 

</LinearLayout> 

nav_header_main.xmlで次のように、ナビゲーションが表される。

onCreate内:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    View header = navigationView.getHeaderView(0); 
      CircleImageView imgProfile = (CircleImageView) header.findViewById(R.id.navimgProfile); 
      proName = (TextView) header.findViewById(R.id.nav_profile_name); 
      proLocation = (TextView) header.findViewById(R.id.pro_location); 


    proName.setText(USERNAME); 
    proLocation.setText(Navemail); 
+0

なぜ私はgetHeaderView(0)ですか?これはスタックラインを参照していますか? – RoCk

関連する問題