2015-07-03 7 views
0

Я хочу, чтобы мой пункт обновления отображался на верхней панели. Я расширяю ListActivity и используя тему android:Theme.Holo.Light.DarkActionBar. Меню создается с помощью:Значок меню на ActionBar ListActivity

<menu 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    tools:context="eu.pcas_project.client.android.pa.services.ServiceList"> 

    <item 
     android:id="@+id/refresh_all_services" 
     android:title="@string/refresh_all_services" 
     android:icon="@drawable/ic_menu_refresh" 
     app:showAsAction="always" /> 
</menu> 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_service_list, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

ListActivity with misplaced menu icon.

Если изменить app:showAsAction="always" на XML меню к android:showAsAction="always", это работает, как я хочу, чтобы это-значок на верхней панели, но то я получаю сообщение об ошибке Должен использовать android: showAsAction, когда не используется библиотека appcompat. Можно ли это исправить?

Таргетинг API 19.

+0

Предупреждение верно: если ваша деятельность не распространяется на «AppCompatActivity», вы можете использовать префикс схемы «android:» в меню xml. Но если вы выходите из 'AppCompatActivity', вы должны использовать что-либо другое, кроме префикса схемы android:', чтобы ассемблер распознавал функции меню AppCompat'. – ecle

ответ

0

Как сказано в вопросе, android:showAsAction="always" работает, но выдает ошибку.

Хотя проект не использовал библиотеку appcompat напрямую, я обнаружил, что библиотека, импортированная указанным проектом, имела com.android.support:appcompat-v7:XXX.YYY.ZZZ в качестве зависимости, хотя она и не была необходима. Это было добавлено Android Studio. После того, как линия была удалена, и проект перестроил ошибку, исчез и значок обновления появился в верхнем правом углу, а не в меню.

0

Это зависит от того, если вы ВГ физической кнопки меню не появляется. но вы можете попробовать это:

<item 
    android:id="@+id/refresh_all_services" 
    android:icon="@drawable/ic_menu_refresh" 
    android:title="@string/refresh_all_services" 
    app:showAsAction="withText|ifRoom" 
    app:actionProviderClass="android.support.v7.widget.ActionProvider" 
    /> 
+0

К сожалению, это не сработало. Да, есть кнопка меню, но я попытался с телефоном с выделенной кнопкой меню, и он все еще не работает (на этот раз это выглядит как три точки в верхнем углу). – Daniel

+0

вы можете проверить это http://stackoverflow.com/a/28159481/4987172 –

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