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

  • Ocultar búsqueda / ir botón en el teclado virtual cuando se utiliza la búsqueda?
  • ¿Cómo enviar la vista hacia atrás? ¿Cómo controlar la orden z de forma programática?
  • Android: establece las pestañas predeterminadas pero sin ningún contenido
  • Reseting el color de fondo de una vista
  • se llama onmeasure y no sé por qué - android
  • Vista de niño androide sin estado de prensa
  • GetHeight () vs getLayoutParams (). Altura
  • ¿Por qué mi barra de progreso no está centrada verticalmente?
  • GridLayout empuja a sus hijos y desbordamiento cuando se le da fill_parent para la altura
  • Obtener eventos táctiles en un diálogo que se muestra mientras el dedo ya estaba tocando la pantalla
  • Relación de aspecto fija
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.