2012-12-24 53 views
0

我加入了SherlockActionBar到我的項目,增加了一些菜單項,並在模擬器中(4.0.3)正常工作,但它並沒有我的手機上(銀河S3) ;它只是不顯示。缺少SherlockActionBar dropdownmenu上的電話,工作在模擬器

我在我的清單的9最低SDK版本針對15:

<uses-sdk 
    android:minSdkVersion="9" 
    android:targetSdkVersion="15" /> 
<application 
    android:icon="@drawable/dimmiicon" 
    android:label="@string/app_name" 
    android:theme="@style/Theme.Sherlock.Light.DarkActionBar" > 

代碼是相當簡單的,但也許我失去了一些東西。相關位...

import com.actionbarsherlock.app.ActionBar; 
import com.actionbarsherlock.app.SherlockFragmentActivity; 
import com.actionbarsherlock.view.MenuItem; 


public class Launcher extends SherlockFragmentActivity implements OnUserAuthenticatedListener, OnDialogChatterListener, OnAnimationCompleteListener { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_launcher); 

    final ActionBar ab = getSupportActionBar(); 
    ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
    ab.setCustomView(R.layout.title_bar); 

    ab.setStackedBackgroundDrawable(getResources().getDrawable(R.drawable.titlebarbackground)); 
    TextView txt = (TextView) findViewById(R.id.myTitle1); 
    Typeface font = Typeface.createFromAsset(getAssets(), "caviar_dreams_bold.ttf"); 
    txt.setTypeface(font); 
    TextView txt2 = (TextView) findViewById(R.id.myTitle2); 
    Typeface font2 = Typeface.createFromAsset(getAssets(), "caviardreams.ttf"); 
    txt2.setTypeface(font2); 
} 
@Override 
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.commonmenus, menu); 
    return true; 
} 



@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 

     return false; 
    case R.id.search_for_product: 
     performProductReview(findViewById(android.R.id.content)); 
     return true; 
    case R.id.search_for_business: 
     performCompanyReview(findViewById(android.R.id.content)); 
     return true; 
    case R.id.search_for_service: 
     performServiceReview(findViewById(android.R.id.content)); 
     return true; 
    case R.id.search_for_person: 
     performPersonReview(findViewById(android.R.id.content)); 
     return true; 

    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

而且commonmenus.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<item 
    android:id="@+id/menu_settings" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    android:title="@string/menu_settings"/> 
<item android:id="@+id/search_for_product" android:showAsAction="never" android:orderInCategory="10" android:title="@string/menu_search_for_product"></item> 
<item android:id="@+id/search_for_business" android:showAsAction="never" android:orderInCategory="11" android:title="@string/menu_search_for_business"></item> 
<item android:id="@+id/search_for_service" android:showAsAction="never" android:orderInCategory="12" android:title="@string/menu_review_service"></item> 
<item android:id="@+id/search_for_person" android:showAsAction="never" android:orderInCategory="14" android:title="@string/menu_review_person"></item> 
<item android:id="@+id/view_my_reviews" android:showAsAction="never" android:orderInCategory="15" android:title="@string/menu_view_my_reviews"></item> 

</menu> 

我使用的是大偵探動作條使用一些自定義的字體的自定義標題和正在仿真器和手機,但菜單隻顯示在模擬器上。我嘗試過將自定義字體代碼註釋掉,並沒有什麼區別。

我好清楚:3個菜單點甚至不露面。

花了幾個小時搜索和尋找線索後,我在一個損失。任何洞察力將不勝感激。

+0

3點(溢出菜單)不應該顯示出來,因爲S3具有一個專用的菜單按鈕。 –

+0

新手機...不知道這麼說謝謝。有沒有辦法讓它顯示出來?我在其他應用程序上看到它。 – CMDPrompt

+0

ActionBarSherlock * did *有幾個版本的力溢出主題。不過,我建議保持原樣;只有在沒有專用菜單鍵的設備上才能看到溢出菜單。 –

回答

1

對於Android蜂窩+ ActionBarSherlock將使用股票ActionBar功能一起工作,這意味着你留下了官方的動作條,只把在非常特殊的情況遺產菜單按鈕裝置,在這裏看到: http://android-developers.blogspot.co.il/2012/01/say-goodbye-to-menu-button.html

在「對遺留應用程序溢出的行動按鈕」:

如果您的應用程序的設備上運行,而無需專門的菜單按鈕,在 系統決定是否基於W行動溢出添加到導航 欄您聲明要在 清單元素中支持的API級別。邏輯歸結爲:

如果您將minSdkVersion或targetSdkVersion設置爲11或更高, 系統將不會添加傳統溢出按鈕。

否則,系統將在Android 3.0或更高版本上運行 時添加舊版溢出按鈕。

唯一的例外是,如果你設置的minSdkVersion爲10或更低, 集targetSdkVersion至11,12,或13,你不要用動作條,運行你的應用程序 時 系統將添加傳統溢出按鈕在Android 4.0或更高版本的手機上。

+1

* ActionBarSherlock :) –

+0

@JakeWharton最近切換到iOS,短內存... :) – marmor

相關問題