vertical studio hamburger deslizante deslizable crear boton android text menu navigation-drawer menuitem

studio - menu vertical android



Android cambia elementos de menú del cajón de navegación texto mediante programación (4)

Este código se puede usar para agregar menús dinámicamente. funcionó para mí ... la parte principal del código es displayItems (); ..... pasa el String [] de elementos como un parámetro para la función ... funciona.

public class Courses extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { TextView nn,ne,np,nl; SharedPreferences sp; NavigationView navigationView; DrawerLayout drawer; ImageView img; NavigationView nv; int id; String[] acc={"ACPFAT","CPFA","Tally.ERP 9 Simplified","D P F A","CA Articles","DAA","TFAP","Tally.ERP 9 - Specialization","GST (Goods and service Tax)"}; drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.setDrawerTitle(Gravity.CENTER,n); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open,R.string.navigation_drawer_close); drawer.addDrawerListener(toggle); toggle.syncState(); navigationView.setNavigationItemSelectedListener(this); Intent i=getIntent(); id=i.getIntExtra("button",0); switch(id) { case R.id.account: img.setImageResource(R.drawable.acc); displayItems(acc); break; case R.id.modular: img.setImageResource(R.drawable.acc); displayItems(mod); break; case R.id.diploma: img.setImageResource(R.drawable.acc); displayItems(dc); break; } public void displayItems(String[] a) { final NavigationView navigationView=findViewById(R.id.nav_view); final DrawerLayout drawer=findViewById(R.id.drawer_layout); Menu menu=navigationView.getMenu(); SubMenu sb=menu.addSubMenu("Courses"); int i=0; while(i<a.length) { sb.add(a[i]); i++; } }

Tengo el nuevo Cajón de navegación en mi aplicación y quiero cambiar el texto del título de la vista de navegación del título dinámicamente desde el código. He visto muchas publicaciones pero no puedo entender, ¿cómo puedo hacer esto? ¿Cómo puedo lograr esto correctamente?

MainActivity.java

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); }

activity_main_drawer.xml

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/nav_camara" android:icon="@android:drawable/ic_menu_camera" android:title="Import" /> <item android:id="@+id/nav_gallery" android:icon="@android:drawable/ic_menu_gallery" android:title="Gallery" /> <item android:id="@+id/nav_slideshow" android:icon="@android:drawable/ic_menu_slideshow" android:title="Slideshow" /> <item android:id="@+id/nav_manage" android:icon="@android:drawable/ic_menu_manage" android:title="Tools" /> </group> <item android:title="Communicate"> <menu> <item android:id="@+id/nav_share" android:icon="@android:drawable/ic_menu_share" android:title="Share" /> <item android:id="@+id/nav_send" android:icon="@android:drawable/ic_menu_send" android:title="Send" /> </menu> </item>


Cambie el código como se muestra a continuación en caso de que cambie el nombre o elimine el elemento del menú de navegación.

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); if (navigationView != null) { Menu menu = navigationView.getMenu(); menu.findItem(R.id.nav_profile).setTitle("My Account"); menu.findItem(R.id.nav_mng_task).setTitle("Control Task"); //menu.findItem(R.id.nav_pkg_manage).setVisible(false);//In case you want to remove menu item navigationView.setNavigationItemSelectedListener(this); }


Puede cambiar el título del elemento de menú de navegación mediante programación agregando las siguientes líneas en el archivo MainActivity.java .

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ... //other stuff here ... NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); // get menu from navigationView Menu menu = navigationView.getMenu(); // find MenuItem you want to change MenuItem nav_camara = menu.findItem(R.id.nav_camara); // set new title to the MenuItem nav_camara.setTitle("NewTitleForCamera"); // do the same for other MenuItems MenuItem nav_gallery = menu.findItem(R.id.nav_gallery); nav_gallery.setTitle("NewTitleForGallery"); // add NavigationItemSelectedListener to check the navigation clicks navigationView.setNavigationItemSelectedListener(this); }

Esto funciona bien para mi. Espero que te ayude


@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_menus); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); Menu menu = navigationView.getMenu(); MenuItem nav_login = menu.findItem(R.id.nav_logout); nav_login.setTitle("Login"); }

¡Esto es correcto! Espero que esto funcione bien ...