我遇到了在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;
}
我已经尝试了很多但未能解决它。请帮助我。 在此先感谢。
答案 0 :(得分:4)
似乎您在整个应用程序或此活动的清单文件中使用Theme.Sherlock.Dark。 这是ActionBar的正常行为 - 它由样式定义,但您的自定义视图元素具有自己的背景,文本样式等... 来自setCustomView()javadoc:
自定义导航视图显示在应用程序图标和任何操作按钮之间,可以使用其中的任何可用空间。
此方法只是向条形图添加新视图,但不设置“整条视图”。
看看http://jgilfelt.github.com/android-actionbarstylegenerator - 这是动作栏的样式生成器。注意切换按钮“样式兼容性”。
答案 1 :(得分:1)
我发现这个解决方案并不是我想要的方式,而是另一种方式。实际上我已经为各种屏幕创建了带有居中屏幕标题的图像,并将其设置为操作栏背景而不是创建自定义视图,而SherlockActionBar足够灵活,可以隐藏左上角显示的默认标题。我所做的就是。
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar()
.setBackgroundDrawable(getResources().getDrawable(R.drawable.menu_head));