How to set menu to Toolbar in Android

后端 未结 14 1400
轻奢々
轻奢々 2020-11-29 20:17

I want use ToolBar instead of ActionBar, but don\'t show me menu in toolbar!!! i want set menu such as Refresh or Setting<

相关标签:
14条回答
  • 2020-11-29 20:40
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar;        
        toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
      }
    
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.menu_drawer,menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
            if (id == R.id.action_drawer){
               drawerLayout.openDrawer(GravityCompat.END);
                if (drawerLayout.isDrawerOpen(GravityCompat.END)) {
                    drawerLayout.closeDrawer(GravityCompat.END);
                } else {
                    drawerLayout.openDrawer(GravityCompat.END);
                }
            }
            return super.onOptionsItemSelected(item);
        }
    

    res/layout/drawer_menu

    <?xml version="1.0" encoding="utf-8"?>
    <menu
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <item
            android:id="@+id/action_drawer"
            android:title="@string/app_name"
            android:icon="@drawable/ic_menu_black_24dp"
            app:showAsAction="always"/>
    
    </menu>
    

    toolbar.xml

    <com.google.android.material.appbar.AppBarLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">
    
    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay"
        app:titleTextColor="@android:color/white"
        app:titleTextAppearance="@style/TextAppearance.Widget.Event.Toolbar.Title">
    
         <TextView
             android:id="@+id/toolbar_title"
             android:layout_gravity="center"
             android:layout_height="wrap_content"
             android:layout_width="wrap_content"
             android:text="@string/app_name"
             android:textColor="@android:color/white"
             style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title" />
    
    </androidx.appcompat.widget.Toolbar>
    

    0 讨论(0)
  • 2020-11-29 20:46

    In XML add one line inside <Toolbar/>

    <com.google.android.material.appbar.MaterialToolbar
    app:menu="@menu/main_menu"/>
    

    In java file, replace this:

     setSupportActionBar(toolbar);
            if (getSupportActionBar() != null) {
                getSupportActionBar().setTitle("Main Page");
            }
    

    with this:

    toolbar.setTitle("Main Page")
    
    0 讨论(0)
  • 2020-11-29 20:46
    private Toolbar toolbar;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        toolbar = (Toolbar) findViewById(R.id.my_toolbar);
        *// here is where you set it to show on the toolbar*
        setSupportActionBar(toolbar);
    }
    

    Well, you need to set support action bar setSupportActionBar(); and pass your variable, like so: setSupportActionBar(toolbar);

    0 讨论(0)
  • 2020-11-29 20:47

    In your activity override this method.

       @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main_menu, menu);
            return true;
        }
    

    This will inflate your menu below:

     <?xml version="1.0" encoding="utf-8"?>
        <menu xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto">
    
            <item
                android:id="@+id/menu_main_setting"
                android:icon="@drawable/ic_settings"
                android:orderInCategory="100"
                app:showAsAction="always"
                android:actionLayout="@layout/toolbar"
                android:title="Setting" />
    
            <item
                android:id="@+id/menu_main_setting2"
                android:icon="@drawable/ic_settings"
                android:orderInCategory="200"
                app:showAsAction="always"
                android:actionLayout="@layout/toolbar"
                android:title="Setting" />
    
        </menu>
    
    0 讨论(0)
  • 2020-11-29 20:49

    Simple fix to this was setting showAsAction to always in menu.xml in res/menu

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <item
            android:id="@+id/add_alarm"
            android:icon="@drawable/ic_action_name"
            android:orderInCategory="100"
            android:title="Add"
            app:showAsAction="always"
            android:visible="true"/>
    
    </menu>
    
    0 讨论(0)
  • 2020-11-29 20:51

    just override onCreateOptionsMenu like this in your MainPage.java

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }
    
    0 讨论(0)
提交回复
热议问题