Подтвердить что ты не робот

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

Я пытаюсь использовать 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"/>

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

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

myToolbar.showOverflowMenu();
myToolbar.setTitleTextColor(R.color.lightPrimaryText);

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

4b9b3361

Ответ 1

Определите 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(), чтобы определить поведение onClick вашего 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;
}

Ответ 2

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

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

сделано:)

Ответ 3

Просто сделайте. Скопируйте этот код в свой файл 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>

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