¿Hay alguna manera de controlar las vistas dentro del encabezado de NavigationView?

Como el título dice, quiero saber si hay alguna manera de controlar las vistas dentro de la cabecera NavigationView ? (Excepto para añadir o eliminar el encabezado.)

Por ejemplo: En el encabezado, tengo un avatar de usuario. De forma predeterminada, muestra una imagen de invitado, pero después de que el usuario inicie sesión, se mostrará el avatar real.

¿Cómo se puede lograr esto?

4 Solutions collect form web for “¿Hay alguna manera de controlar las vistas dentro del encabezado de NavigationView?”

Después de actualizar su biblioteca de soporte técnico a la versión 23.1.1 o superior,

Usted podría hacer esto –

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

O si tiene varios encabezados

 navigationView.getHeaderCount() 

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

Como no puedo aceptar un comentario como respuesta. Así que, repost Moinkhan 'respuesta aquí:

Primero cree el encabezado XML como lay_header.xml

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

En su archivo java inflar este encabezado anterior en un TextView. me gusta

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

Ahora agregalo como HeaderView

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

Eso es…

También puede comprobarlo en: Personalización de NavigationView – Adición de headerView dinámico, Android Support Design Library

¡Muchas gracias! ¡Y otra vez, necesitamos una función que permita al usuario aceptar un comentario como respuesta!

La otra manera de hacer esto es usando el método "inflateHeaderView ()" del objeto NavigationView, como a continuación (después de usar "setContentView ()"):

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

Después de este punto, puede utilizar "headerLayout" para acceder a las vistas personalizadas en el diseño del encabezado, como a continuación:

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

En mi caso estoy utilizando el marco ButterKnife para inyectar Ver "navigationView" como este:

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

Simplemente intenta encontrar tu punto de vista en tu actividad:

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

Esto funciona para mi. Mi diseño de cabecera es:

 <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> 

Mi vista de navegación en el diseño de la actividad es:

 <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"/> 

Y BTW, me encontré con problema al inflar LinearLayout, donde los params de diseño no se proporcionan:

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

Espero eso ayude.

  • ¿Por qué se crea un FrameLayout extra para fragmentos?
  • ¿Por qué la vista personalizada no invalida?
  • Efecto del carrusel de Android con diseños
  • Ver traer al frente no funciona
  • Iniciar actividad con SearchView abierto
  • Cómo obtener NoSuchMethodError con métodos TextView
  • Diferencia entre el relleno y el margen de una vista
  • Eliminar un oyente de una vista en android
  • Cómo eliminar el fondo de una vista (normal) (Android)
  • ¿Cómo usar la vista propia en el diseño?
  • ¿Cuántos ViewStubs son demasiados para un solo archivo XML de presentación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.