How does one remove default Toolbar menu items and replace with different icons?

前端 未结 1 1628
陌清茗
陌清茗 2020-12-15 13:41

I am using a toolbar from v7.widget.Toolbar support library and v7.app.ActionBarActivity. When the onCreateOptionsMenu is inflated on the toolbar, I see a standard \"Back\"

1条回答
  •  感动是毒
    2020-12-15 14:01

    This is how I use the Toolbar. It is a standalone toolbar which give you more control over its functionality within the class.

    activity_home.xml

    
    
    
        
    
        
            
        
    
    
    

    Styles

    
    

    **MyActivity **

    public class MyActivity extends ActionBarActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_home);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            // Set navigation icon
            toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_launcher));
            // Navigation onClickLister
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // finish(); // or your action here
                }
            });
            //Inflate menu
            toolbar.inflateMenu(R.menu.menu_my);
            // menu items 
            toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    int id = item.getItemId();
                    if (id == R.id.action_settings) {
                        // Your action here
                        return true;
                    }
                    return false;
                }
            });
            // Clear toolbar icons 
            toolbar.getMenu().clear(); // I believe this is what you are looking for
            // Set title
            toolbar.setTitle("Title");
            //Set SubTitle
            toolbar.setSubtitle("Sub Title");
    
        }
    }
    

    Working Example of changing everything inside the toolbar

    Layout

    
    
        
    
        
            
    
            
    
        
    
    
    
    

    Menu 1

    
        
    
    

    Menu 2

    
        
    
    

    Activity

    public class TestingActionBar extends ActionBarActivity {
        SwitchCompat swChaneMenu;
        Toolbar toolbar;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_testing_action_bar);
            toolbar = (Toolbar) findViewById(R.id.toolbar);
            toolbar.setTitle("Toolbar Test 1");
            toolbar.inflateMenu(R.menu.menu_testing_action_bar);
            toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.nav_tint));
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });
            toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    int id = item.getItemId();
                    if (id == R.id.toast) {
                        Toast.makeText(TestingActionBar.this, "Toasty", Toast.LENGTH_SHORT).show();
                        return true;
                    }
                    if (id == R.id.action_settings) {
                        Toast.makeText(TestingActionBar.this, "Settings", Toast.LENGTH_SHORT).show();
                        return true;
                    }
    
                    return false;
                }
            });
            swChaneMenu = (SwitchCompat) findViewById(R.id.swChaneMenu);
            swChaneMenu.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if (isChecked) {
                    toolbar.setTitle("Toolbar Test 2");
                    toolbar.getMenu().clear();
                    toolbar.inflateMenu(R.menu.menu_settings);
                    toolbar.setNavigationIcon(null);
                    toolbar.setBackgroundColor(getResources().getColor(R.color.red));
                } else {
                    toolbar.setTitle("Toolbar Test 1");
                    toolbar.getMenu().clear();
                    toolbar.inflateMenu(R.menu.menu_testing_action_bar);
                    toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.nav_tint));
                    toolbar.setBackgroundColor(getResources().getColor(R.color.primary));
                }
                }
            });
        }
    }
    

    Switch Not Checked

    enter image description here

    Switch Checked

    enter image description here

    0 讨论(0)
提交回复
热议问题