Как добавить меню переполнения на панель инструментов?

Я пытаюсь использовать Android ActionBar в своем приложении, и у меня есть опция, которая скрыта в меню переполнения.

Там много документации, но это сбивает с толку, потому что большая часть из них относится только к очень старым версиям Android, и когда вы пытаетесь применить те же концепции, они больше не работают или работают по-другому.

Это в моем макете Activity

 <android.support.v7.widget.Toolbar android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:titleTextColor="@android:color/white" android:background="@color/colorPrimary" android:elevation="4dp" android:theme="@style/ThemeOverlay.AppCompat.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

И это в onCreate() моей Activity

 // sets up activity toolbar Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); setSupportActionBar(myToolbar); myToolbar.showOverflowMenu(); myToolbar.setTitleTextColor(R.color.lightPrimaryText); 

Я также попытался раздуть XML-файл меню из onCreateOptionsMenu() , но это также не дало мне результатов, которые я хотел.

Определите Menu для Toolbar в папке ресурсов res / menu , например:

toolbar_menu.xml

 <?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" xmlns:tools="http://schemas.android.com/tools" tools:context=".activity.MainActivity"> <item android:id="@+id/action_sign_out" android:title="@string/toolbar_sign_out" app:showAsAction="never"/> </menu> 

Настройка app:showAsAction="never" гарантирует, что этот MenuItem не будет отображаться на Toolbar , но вместо этого помещается в меню переполнения.

Тема вашей Activity должна быть (или получена) одной из тем NoActionBar AppCompat (например, Theme.AppCompat.Light.NoActionBar ).

В своей Activity настройте Toolbar :

 Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); setSupportActionBar(myToolbar); 

И переопределить onCreateOptionsMenu() :

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

Вы можете переопределить onOptionsItemSelected() чтобы определить поведение onOptionsItemSelected() вашего MenuItem (s):

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_sign_out: { // do your sign-out stuff break; } // case blocks for other MenuItems (if any) } return false; } 

В файле манифеста объявить

 android:theme="@style/AppTheme.NoActionBar" 

как это :

 <activity android:name=".ActivityName" android:label="@string/label" android:theme="@style/AppTheme.NoActionBar" /> 

И добавьте это в свой стиль:

  <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> 

И назовите это в Activity onCreate ():

 toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); 

Переопределить этот метод в действии:

  @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.product_list, menu); //U can find item set icon and stuff... MenuItem item= menu.findItem(R.id.action_search); return true; } 

И объявите свое меню таким, как это для меню переполнения:

  <?xml version="1.0" encoding="utf-8"?> <menu > <group> <item android:id="@+id/sign_out" android:title="@string/sign_out" /> <item android:id="@+id/about" android:title="@string/about" /> </group> </menu> 

И для выбора позиции элемента управления

 @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.sign_out: //do stuff break; } return super.onOptionsItemSelected(item); } 

сделанный 🙂

Просто сделайте. Скопируйте этот код в свой файл MainActivet`.

 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main2, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { Group gp=(Group)findViewById(R.id.order); return true; } return super.onOptionsItemSelected(item); }` 

Теперь создайте файл каталога для имени меню для этого в Android_Studio-> app Folder-> Right_Click-> New-> Directory-> Enter name menu now Создайте XML-файл там с именем menu2.xml

И прошёл этот код в файле menu2.xml

  <?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_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never" android:icon="@android:drawable/ic_input_add" /> </menu> 

Если любой запрос Пожалуйста, напишите мне

Intereting Posts