Android Ändern Sie den Text der Menüelemente des Navigationsfachs programmgesteuert
Lesezeit: 4 Minuten
Benutzer3065901
Ich habe die neue Navigationsleiste in meiner App und möchte den Titeltext der Menüelemente der Navigationsansicht dynamisch aus dem Code ändern. Ich habe mir viele Beiträge angesehen, aber ich weiß nicht, wie ich das machen kann. Wie kann ich das richtig erreichen?
Die einzige Möglichkeit, das Menü dynamisch zu ändern, besteht darin, es zu löschen und ein anderes Menü zu laden: stackoverflow.com/questions/31203212/…
– Kris Larson
22. Oktober 2015 um 15:53 Uhr
ELITE
Sie können den Titel des Navigationsmenüelements programmgesteuert ändern, indem Sie die folgenden Zeilen hinzufügen MainActivity.java Datei.
@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);
}
Das funktioniert gut für mich. Hoffe es wird dir helfen.
Ändern Sie den Code wie unten, falls Sie ein Element umbenennen oder aus der Schubladenliste des Navigationsmenüs entfernen
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);
}
Wenn Sie ein Layout im Menü der Navigationsleiste als Element haben und es programmgesteuert ändern möchten, hilft Ihnen dieses Code-Snippet:
MenuItem nav = navigationView.getMenu().findItem(R.id.nav_close_app);
nav.setActionView(R.layout.item_navigationdrawer_close_app);
Dieser Code kann verwendet werden, um Menüs dynamisch hinzuzufügen. es funktionierte für mich … der Hauptteil des Codes ist die displayItems (); ….. übergeben Sie den String[] von Elementen als Parameter für die Funktion …. es funktioniert.
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++;
}
}
Amit Sharma
Für Kotliin:
val bottomNavigationView = findViewById<BottomNavigationView(R.id.bottom_nav)
val menu: Menu = bottomNavigationView.menu
val secondMenu: MenuItem = menu.findItem(R.id.needsFragment)
// To set menu title according to user type (ie. Abc / Xyz )
when(userType){
1 -> secondMenu.title = "Abc"
2 -> secondMenu.title = "Xyz"
}
bottomNavigationView.setupWithNavController(navController)
bottomNavigationView.setOnNavigationItemReselectedListener { }
10735000cookie-checkAndroid Ändern Sie den Text der Menüelemente des Navigationsfachs programmgesteuertyes
Die einzige Möglichkeit, das Menü dynamisch zu ändern, besteht darin, es zu löschen und ein anderes Menü zu laden: stackoverflow.com/questions/31203212/…
– Kris Larson
22. Oktober 2015 um 15:53 Uhr