2015-03-04 3 views
0

Для моего приложения у меня есть ящик для навигации и используется тот, который доступен в Android Studio при первом создании приложения. Я пытаюсь изменить значок в правой части панели действий, которая в настоящее время находится на 3 точки друг над другом. Я создал XML-файл меню со значком, названием, идентификатором и всем, а также всякий раз, когда я надуваю его, я использую правильный файл xml-файла, который я создал для него. Я хочу добавить простой значок «+» и не могу понять это.При использовании навигационного ящика я не могу изменить значки ActionBar справа

Это мое XML-файл меню.

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

И вот метод onCreate. Мой файл меню называется menu_add_profiles.

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (!mNavigationDrawerFragment.isDrawerOpen()) { 

     getMenuInflater().inflate(R.menu.menu_add_profiles, menu); 
     restoreActionBar(); 
     return true; 
    } 
    return super.onCreateOptionsMenu(menu); 
} 

Есть ли еще один шаг, который мне нужно предпринять или предпринять, чтобы заставить его работать?

ответ

0

Ваше текущее раздувание меню только в том случае, если выдвижной ящик открыт. Вам нужно удалить это условие, и все будет работать на вас. Что-то вроде ниже должно работать.

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

      getMenuInflater().inflate(R.menu.menu_add_profiles, menu); 
      restoreActionBar(); 
      return true; 
    } 
0

Используйте этот

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
                R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { 

            /** Called when a drawer has settled in a completely closed state. */ 
            public void onDrawerClosed(View view) { 
                super.onDrawerClosed(view); 
                getActionBar().setTitle(mTitle); 
                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
            } 

            /** Called when a drawer has settled in a completely open state. */ 
            public void onDrawerOpened(View drawerView) { 
                super.onDrawerOpened(drawerView); 
                getActionBar().setTitle(mDrawerTitle); 
                invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
            } 
        }; 

        // Set the drawer toggle as the DrawerListener 
        mDrawerLayout.setDrawerListener(mDrawerToggle); 
    } 

http://developer.android.com/training/implementing-navigation/nav-drawer.html

0

Я работала в одной и той же проблемой и нашел решение:

Изменение android:showAsAction="always" к app:showAsAction="always" и добавить xmlns:app="http://schemas.android.com/apk/res-auto".

Вот мой menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item android:id="@+id/action_add_dialog" 
    android:icon="@drawable/ic_add_24dp" 
    android:title="@string/action_add" 
    app:showAsAction="always" 
    android:visible="true" /> 
<item android:id="@+id/action_settings_pref" 
    android:icon="@drawable/ic_settings_applications_24dp" 
    android:title="@string/action_add" 
    app:showAsAction="always" 
    android:visible="true"/> 

Смежные вопросы