Android Ändern Sie den Text der Menüelemente des Navigationsfachs programmgesteuert

Lesezeit: 4 Minuten

Benutzer-Avatar
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?

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>

  • 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


Benutzer-Avatar
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);

@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");


}

Das ist richtig! Hoffe das läuft gut……

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++;
    }
 }

Benutzer-Avatar
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 { }

1073500cookie-checkAndroid Ändern Sie den Text der Menüelemente des Navigationsfachs programmgesteuert

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy