Esiste un modo per controllare le viste all'interno dell'intestazione di NavigationView?

Come dice il titolo, voglio sapere se esiste un modo per controllare le viste all'interno dell'intestazione di NavigationView ? (Tranne l'aggiunta o la rimozione dell'intestazione.)

Ad esempio: nell'intestazione ho un avatar utente. Per impostazione predefinita, visualizza un'image guest, ma dopo che l'utente accede, verrà mostrato l'avatar reale.

  • Pulsante in ritardo per 600 ms - 800 ms! Come risolvere?
  • Menu di Fab Library della biblioteca di supporto di disegno di Android
  • come mostrare il carattere hindi in webview di android
  • ListView OverScroll
  • Trilaterazione in Android usando iBeacons
  • Perché Android Geocoder ha lanciato un'exception "Servizio non disponibile"?
  • Come può essere realizzato?

  • JSON Parsing in android - dalla cartella delle risorse
  • Mediazione Admob - ID del publisher vs Mediation ID
  • Quando viene premuto il button di riproduzione della barra degli strumenti
  • Scrivi plugin per Android App
  • Implementazione di GCM CCS (XMPP) in JAVA utilizzando la libreria smack. Il collegamento non è riuscito con gcm.googleapis.com
  • Ottieni tutte le righe da SQLite
  • 4 Solutions collect form web for “Esiste un modo per controllare le viste all'interno dell'intestazione di NavigationView?”

    Dopo aver aggiornato la libreria di supporto alla versione 23.1.1 o superiore,

    Potresti fare questo –

     View header = navigationView.getHeaderView(0); TextView text = (TextView) header.findViewById(R.id.textView); 

    o se si dispone di più intestazioni

     navigationView.getHeaderCount() 

    Rif: https://code.google.com/p/android/issues/detail?id=190226#c31

    Dal momento che non posso accettare un commento come risposta. Quindi, ripeto Moinkhan 'rispondere qui:

    creare XML di intestazione come lay_header.xml

     <TextView android:id="@+id/tvThought" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

    sul tuo file java getta questa intestazione sopra in un TextView. piace

     TextView headerView = (TextView) LayoutInflater.from(this).inflate(R.layout.lay_header, null); headerView.setText("Your_thoght"); 

    Adesso aggiungi come HeaderView

     navView = (NavigationView) findViewById(R.id.navView); navView.addHeaderView(headerView); 

    Questo è tutto…

    Puoi anche controllarlo in: Personalizzazione di NavigationView – Aggiunta di headerView dinamico, Libreria di progettazione di supporto per Android

    Grazie molto! E ancora, abbiamo bisogno di una function che consente all'utente di accettare un commento come risposta!

    L'altro modo per farlo è usare il metodo "inflateHeaderView ()" dell'object NavigationView, come sotto (dopo l'utilizzo di "setContentView ()"):

     View headerLayout = navigationView.inflateHeaderView(R.layout.yours_nav_header_layout); 

    Dopo questo punto è ansible utilizzare "headerLayout" per accedere alle viste personalizzate nel layout di intestazione, come sotto:

     View cutomView = (TextView) headerLayout.findViewById(R.id.lay_sign_in); 

    Nel mio caso sto utilizzando il framework ButterKnife per iniettare Visualizza "navigationView" come questo:

     @Bind(R.id.nav_view) NavigationView navigationView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } 

    Semplicemente prova a trovare la tua vista nella tua attività:

     tvUserName = (TextView) findViewById(R.id.tv_username); 

    Per me funziona. Il mio intestazione è:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="192dp" android:background="?attr/colorPrimaryDark" android:padding="16dp" android:theme="@style/ThemeOverlay.AppCompat.Dark" android:orientation="vertical" android:gravity="bottom"> <TextView android:id="@+id/tv_username" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.AppCompat.Body1"/> </LinearLayout> 

    Il mio NavigationView nel Layout attività è:

     <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_height="match_parent" android:layout_width="wrap_content" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/drawer_header" app:menu="@menu/menu_drawer"/> 

    E BTW, mi sono imbattuto in problemi quando infliggono LinearLayout, where non vengono forniti i parametri di layout:

     TextView headerView = (TextView) LayoutInflater.from(this).inflate(R.layout.lay_header, null); headerView.setText("Your_thoght"); 

    Spero che sia d'aiuto.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.