Sherlock操作栏菜单项背景

3
我在Sherlock action bar中渲染自定义视图时遇到了问题。我已经成功地将自定义视图设置到action bar中,设计为将Title textview设置在中心位置,但是当我设置其他菜单项(如刷新)时,它的背景显示为黑色。同样的事情也发生在Home按钮上。请查看以下快照。
请注意,在这个图像中,当我设置Home按钮可见或设置刷新菜单项时,它不应该显示为黑色背景。
在我的Activity屏幕中。
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;
}

我尝试了很多次但无法修复它。请帮助我。 先行致谢。
2个回答

4

看起来你在清单文件中为整个应用程序或此活动使用了Theme.Sherlock.Dark。 这是ActionBar的正常行为--它由样式定义,但是您的自定义视图元素具有其自己的背景、文本样式等等... 从setCustomView()的javadoc中:

自定义导航视图出现在应用程序图标和任何操作按钮之间,可以使用那里的任何空间。

这个方法只是添加了一个新的视图到栏中,但并没有设置'整个栏的视图'。

看一下http://jgilfelt.github.com/android-actionbarstylegenerator - 这是一个用于ActionBar的样式生成器。注意切换按钮“风格兼容性”。


1

我已经找到了解决这个问题的方法,虽然不完全是我期望的方式,而是另一种方法。实际上,我已经为各种屏幕创建了带有居中屏幕标题的图像,并将其设置为操作栏背景,而不是创建自定义视图,SherlockActionBar足够灵活,可以隐藏在左上角显示的默认标题。我所做的全部就是。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接