2012-09-16 190 views
3

我在渲染Sherlock操作欄中的自定義視圖時遇到了問題。發生了什麼事情,我已經成功地設置了自定義視圖的操作欄設計爲標題textview居中,但是當我設置其他菜單項像刷新,然後它的背景顯示爲黑色。主頁按鈕也會發生同樣的情況。請仔細閱讀以下快照。Sherlock動作欄的菜單項背景

Custom Sherlock Action Bar

,你可以在此圖像中看到當我設置主頁按鈕可見或設置不應該用黑色背景上顯示這樣的刷新菜單項。

在我的活動畫面

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.menu_activity); 
    .... 
    View customNav = LayoutInflater.from(this).inflate(R.layout.custom_navigation, null); 
    TextView textView = (TextView)customNav.findViewById(R.id.screen_title); 
    textView.setText("Category"); 
    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
    getSupportActionBar().setCustomView(customNav); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(0,Constants.REFRESH_ITEM_ID,0,Constants.LABEL_REFRESH) 
     .setIcon(R.drawable.ic_refresh) 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    return true; 
} 

我已經嘗試了很多,但未能解決it.Please幫助我。 在此先感謝。

回答

4

看來你使用Theme.Sherlock.Dark清單文件中的整個應用程序或此活動。 這是動作條的正常行爲 - 它是由樣式定義,但你的自定義視圖元素已經是自己的底色,文字風格等... 從setCustomView()的javadoc:

自定義導航視圖出現在應用程序圖標和任何操作按鈕之間,可以使用任何可用的空間。

此方法只是添加新的視圖到酒吧,但沒有設置'整個酒吧的視圖'。

看看http://jgilfelt.github.com/android-actionbarstylegenerator - 這是一個動作欄的風格生成器。請注意切換按鈕「樣式兼容性」。

1

我已經找到了解決方案,這不完全是我想要的方式,但另一種方式。實際上,我已經爲各種屏幕創建了帶有居中屏幕標題的圖像,並將其設置爲動作欄背景,而不是創建自定義視圖,SherlockActionBar足夠靈活以隱藏顯示在左上角的默認標題。我所做的一切都是。

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setDisplayShowTitleEnabled(false); 
getSupportActionBar() 
      .setBackgroundDrawable(getResources().getDrawable(R.drawable.menu_head));