0

我设置了我的动作栏的背景,但在分割模式下背景不起作用。android动作栏样式(按下分割样式和菜单项)

我知道我必须设置这样的:

<item name="android:backgroundSplit">@drawable/some_drowable</item> 

但它不会在API级别工作11

是否有任何其他方式做到这一点?

我有行动酒吧风格另外一个问题,我想,当它被按下改变操作栏图标的颜色(不包括后台区域,但替换图标)。我怎样才能做到这一点 ?

+0

检查值,值-11,值-14文件夹相同样式appllied? –

+0

谢谢,我现在可以为api 14设置背景分割,并且可以工作! 用户使用应用程序与API <14查看不同的背景,这不是一个问题。 – tulkas85

+0

不用客气 –

回答

0

首先,我不知道该怎么做。但第二,我可以帮助你。这并不难。

基本上,操作栏仅仅是一个与你否则将菜单按钮下方设置任何菜单选项栏。

因此,它是在与呼叫您的应用程序的启动创建

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    ... 
} 

而且任何选择的选项将导致

@Override 
public boolean onOptionItemSelected(MenuItem item) { 
    ... 
} 

被调用,与菜单项的用户选择。

但是,这涉及到的选项菜单,这是您要使用更新操作的一个的第三种方法。它被称为onPrepareOptionsMenu(Menu menu)link)。在此方法中,允许更改使用onCreateOptionsMenu(...)创建的菜单。

因此,通过这些知识,您可以通过调用item.getItemId()来检查在动作栏中点击哪个动作,从而保持onOptionsItemSelected(...)中特定项目的(全局)状态。现在

,你将有你希望它是在其中的作用是在操作栏上轻敲知识,和国家。

别急,当应用程序启动已经创建了操作栏。那么如何让它重新创建呢?其实很简单。您只需致电invalidateOptionsMenu()link)即可使其无效。这会导致Android重新绘制操作栏,并导致整个行onCreateOptionsMenu(...)onPrepareOptionsMenu(...)再次被调用。

所以,现在你有你需要的一切:

  1. 确定什么样的行动已经被用户点击(onOptionsItemSelected(...)
  2. 你想要什么状态保持
  3. 如何重绘操作栏

当正在重绘操作栏,您可以更改操作栏上的项目的图标,以便将更新到你希望它是国家。

+0

谢谢,但有没有最简单的方法?我认为像onpressed =“icon_pressed”风格xml – tulkas85

+0

Nope,操作栏是静态的,当它被创建和绘制时,你不能改变它,直到它得到一个要重绘的调用。 – ThaMe90

+0

我对不同的菜单项目有不同的活动,所以我必须写很多代码才能做到这一点。 – tulkas85