so che è tardi per coloro che affrontano lo stesso problema.
posto il layout dell'intestazione nella visualizzazione di navigazione come questo
questo è in activity_main.xml
<android.support.design.widget.NavigationView
android:id="@+id/navigationView"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:layout_marginTop="-24dp"
app:itemTextColor="@color/black"
app:headerLayout="@layout/layout_header_profile"
app:menu="@menu/nav_menu"/>
creare un layout, il nome layout_header_profile.xml e mettere il riempimento che cosa mai vista che si desidera .
layout_header_profile.xml
<?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="178dp"
android:orientation="vertical"
android:weightSum="1"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:orientation="vertical">
<TextView
android:id="@+id/id_user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:text="Irfan"
android:textSize="14sp"
android:textStyle="bold"
/>
<TextView
android:id="@+id/id_user_email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginTop="5dp"
android:text="[email protected]"
android:textSize="14sp"
android:textStyle="normal"
/>
</LinearLayout>
<ImageView
android:id="@+id/id_profile_image"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="38dp"
android:src="@mipmap/ic_profile_pic"
/>
</RelativeLayout>
allora questo file di layout di intestazione sarà nel vostro activity_main.xml solo
Quindi nel tuo MainActivity.java si può dichiarare come si fa vista dalla activity_main.xml ed eseguire azioni su di esso, senza particolari codice richiesto
fare come questo nel tuo onCreate()
TextView tvUserName = (TextView) findViewById(R.id.id_user_name);
tvUserName.setText("My Name");
tvUserName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getBaseContext(),"clicking textview",Toast.LENGTH_LONG).show();
}
});
Spero che funziona Felice di codifica.
Non stai posizionando l'intestazione in NavigationView per caso, vero?NavigtionView internamente colloca l'intestazione in quello che diventa lo slot 0 in una vista ListView nidificata, quindi intercetta e scarta l'evento OnItemClicked per l'intestazione. Potrebbe essere la fonte del problema? Non del tutto sicuro del meccanismo in gioco, ma SE l'intestazione si trova in un NavigationView che avrebbe informazioni importanti. –
Guardando attentamente ho scoperto che ho fatto solo quello che hai detto. C'è un modo per farlo funzionare in questo caso? Grazie !! – varunkr
Probabilmente è meglio posizionare l'intestazione all'esterno della visualizzazione di navigazione. Oppure non usare affatto NavigationView (poiché in genere sembra causare più problemi di quanti ne risolva). È fondamentalmente un listview di fantasia rotto con il codice dell'adattatore per i menu (che non è una grande caratteristica). –