2014-09-04 67 views
4

我想分享一個簡單的文本使用ShareActionProvider與android.support.v7把一個共享按鈕放在ActionBar中。我的應用程序必須使用最低的API級別8工作。 問題:當我使用API​​ 19(targel級別)模擬代碼時,它工作正常,但是當我使用API​​-8設備進行模擬時,彈出式菜單分享的應用程序只顯示應用程序的名稱,不顯示其圖標。我嘗試了一個真正的Android設備與API-9並得到了同樣的問題:沒有圖標。 這裏是我的代碼:使用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。它是偉大的開源庫,併爲所有設備在操作欄設計中提供一致和公正的結果。

編輯: 雖然ActionBarSherlock是真棒,其更新已停止。此外,從API級別21開始,ActionBarActivity現在已被棄用。對於Android版本的帳戶更新是好的步伐,世界都喜歡移動應用程序的材料設計。 我想提供兩種選擇:

  1. 使用官方AppCompatActivity
  2. 或者用工具欄tutorial替換您的ActionBar,這是高度可定製的。