2014-09-04 5 views
4

Я пытаюсь поделиться простым текстом с помощью ShareActionProvider с android.support.v7, чтобы поместить кнопку Share в ActionBar. Мое приложение должно работать с минимальным уровнем API 8. Проблема: когда я эмулирую код с API 19 (уровень таргетинга), он отлично работает, но когда я эмулирую устройство с API-8, всплывающее меню со списком приложения для показа показывают только имена приложений без значков. Я попытался с помощью реального Android-устройства с API-9 и получил ту же проблему: никаких значков тоже. Вот мои коды:share menu с помощью android.support.v7 не показывает значки приложений

в menu.xls:

<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="package.ActivityName" > 


    <item 
     android:id="@+id/menuitemShare" 
     android:orderInCategory="1" 
     android:title="@string/menu1" 
     android:icon="@drawable/ic_action_share" 
     app:showAsAction="ifRoom" 
     app:actionProviderClass="android.support.v7.widget.ShareActionProvider" 
     /> 

</menu> 

в Java активность:

public class ActivityName extends ActionBarActivity { 


    private ShareActionProvider mShareActionProvider; 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     getMenuInflater().inflate(R.menu.bem_vindo2, menu); 
     MenuItem shareItem = menu.findItem(R.id.menuitemCompartilhar); 
     mShareActionProvider = (ShareActionProvider) 
       MenuItemCompat.getActionProvider(shareItem); 
     mShareActionProvider.setShareIntent(getDefaultIntent()); 

     return super.onCreateOptionsMenu(menu); 
    } 

    private Intent getDefaultIntent() { 

     Intent intent = new Intent(Intent.ACTION_SEND); 
     intent.setType("text/plain"); 
     intent.putExtra(Intent.EXTRA_TEXT, "text to share"); 
     return intent; 

    } 
} 

ответ

6

Ваши пункты меню отображается в всплывающем списке, а не в раскрывающемся списке. Я хочу сообщить вам, что это не вина вашего кодирования. Скорее всего это android.support.v7, которые делают такой дисплей для устройств с низким уровнем обслуживания, но отлично работают в высокопроизводительных устройствах. И мне жаль говорить, что вы ничего не можете с этим поделать.

Но если вы хотите иметь одинаковый эффект выпадающего списка для вашего приложения на всех устройствах Android, вы должны переключиться на ActionBarSherlock. Это отличная библиотека с открытым исходным кодом и обеспечивает последовательный и непредвзятый результат для всех устройств при разработке панели действий.

EDIT: Хотя ActionBarSherlock является прекрасным, его обновление было остановлено. Кроме того, из уровня API 21 ActionBarActivity теперь устарела. Для учетной записи андроидной версии обновление - это хороший темп, и мир предпочитает Material Design для мобильных приложений. Я хотел бы посоветовать два варианта:

  1. использовать официальные AppCompatActivity.
  2. Или замените свой ActionBar ToolBar tutorial, который очень настраиваемый.

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

  • Нет связанных вопросов^_^