3

我在 Sherlock 操作栏中呈现自定义视图时遇到问题。发生的事情是我已经成功地在操作栏中设置了自定义视图,旨在将标题文本视图设置在中心,但是当我设置其他菜单项(如刷新)时,它的背景显示为黑色。主页按钮也会发生同样的事情。请浏览以下快照。

自定义 Sherlock 操作栏

正如您在这张图片中看到的那样,当我将主页按钮设置为可见或设置刷新菜单项时,它不应该像这样以黑色背景显示。

在我的活动屏幕中

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;
}

我已经尝试了很多但无法修复它。请帮助我。提前致谢。

4

2 回答 2

4

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

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

此方法只是将新视图添加到栏,但没有设置“整个栏的视图”。

看看http://jgilfelt.github.com/android-actionbarstylegenerator——这是一个动作栏的样式生成器。注意切换按钮“样式兼容性”。

于 2012-09-17T08:01:49.820 回答
1

我发现这个解决方案不完全是我想要的方式,而是另一种方式。实际上,我已经为各种屏幕创建了具有居中屏幕标题的图像,并将其设置为操作栏背景,而不是创建自定义视图,并且 SherlockActionBar 足够灵活,可以隐藏左上角显示的默认标题。我所做的就是。

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar()
            .setBackgroundDrawable(getResources().getDrawable(R.drawable.menu_head));
于 2012-09-17T09:35:36.740 回答