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