studio personalizado multiple con activities android navigation-drawer android-design-library androiddesignsupport navigationview

personalizado - Personalización de NavigationView: adición de headerView dinámico, biblioteca de diseño de soporte de Android



toolbar android (8)

Probé la navegación desde la nueva biblioteca de diseño de soporte para Android. Quiero tener una vista de cabeza dinámica. Básicamente, mi vista de frente mostrará algo así como la cita del día. Tengo como unas 10 citas y quiero seleccionar aleatoriamente una cita y mostrarla en una vista de texto en headerView. También quiero agregar el método onClick para headerView.

En este momento, no veo ninguna posibilidad de cambiar el diseño de headerview programáticamente. ¿Alguna sugerencia para implementar esto?


Después de la nueva actualización de la biblioteca de soporte (23.1.1),

Podrías hacer esto ...

Agregue headerview en la app:headerLayout="@layout/drawer_header" dentro de NavigationView.

Entonces, puedes acceder a ella por,

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

o si tienes múltiples encabezados

navigationView.getHeaderCount()

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


Mi enlace te ayudará

pregunta más delgada

final NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view); View headView = navigationView.getHeaderView(0); ((TextView) headView.findViewById(R.id.nav_title)).setText("New title");


Primero tienes que obtener navigationView. NavigationView navigationView =(NavigationView)findViewById(R.id.nav_view);

Luego encabezado. View header = navigationView.getHeaderView(0) Luego, textView. TextView text = (TextView) header.findViewById(R.id.textView); Y, finalmente, puede configurar el texto que desea mostrar. text.setText("Hello there");


Puede agregar su encabezado personalizado programáticamente llamando a addHeaderView en su navigationView, o definirlo en el archivo de diseño usando app:headerLayout="@layout/myheader" .


Puede usar findViewById() para acceder a los elementos del encabezado dentro de NavigationView. Esto funciona incluso si ha inicializado el encabezado con la propiedad headerLayout, por ejemplo, app:headerLayout="@layout/drawer_header" . Luego puede modificar dinámicamente el encabezado sin necesidad de inflar o agregar un nuevo encabezado.

@Override public boolean onNavigationItemSelected(final MenuItem menuItem) { ... if(mNavItemId == R.id.drawer_item_1) { View headerView = mNavigationView.findViewById(R.id.drawer_header_root); // Test modifying the size of the header root element (FrameLayout) // when the first menu item is clicked. LinearLayout.LayoutParams p = (LinearLayout.LayoutParams) headerView.getLayoutParams(); p.height = p.height == 700 ? 400 : 700; headerView.setLayoutParams(p); return true; } ...

drawer_header.xml

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="196dp" android:background="@color/drawer_header_bg" android:orientation="vertical" android:id="@+id/drawer_header_root"> ...

Creo que Dhawal está diciendo lo mismo, pero no fue muy claro.


primero crea un XML de encabezado como lay_header.xml

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

en su archivo java infle 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...


crear diseño de encabezado tomar vista de texto en el interior,

<TextView android:id="@+id/profile_email_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@id/profile_image" android:layout_alignParentBottom="true" android:layout_toLeftOf="@id/expand_account_box_indicator" android:ellipsize="end" android:maxLines="1" android:paddingBottom="16dp" android:singleLine="true" android:clickable="true" android:onClick="onSelectText" android:text="[email protected]" android:textColor="@color/body_text_2_inverse" android:textSize="@dimen/text_size_medium" />

en onCreate,

((TextView) findViewById(R.id.profile_email_text)).setText("test");

Crea método onSelectText en tu actividad.

public void onSelectText(View v){ if(v.getId() == R.id.profile_email_text){ Snackbar .make(fab, "clicked on sub title", Snackbar.LENGTH_LONG) //.setAction(R.string.snackbar_action, myOnClickListener) .show(); drawer_layout.closeDrawers(); } }


TextView txt2; txt2 = (TextView) navigationView.inflateHeaderView(R.layout.nav_header_main).findViewById(R.id.textView2); txt2.setText("wow! It works like a charm");