android动作栏样式(按下分割样式和菜单项)

时间:2014-02-06 12:06:34

标签: java android android-layout android-actionbar android-styles

我设置了操作栏的背景,但在分割模式下,背景不起作用。

我知道我必须设置这个:

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

但它在Api等级11中不起作用

还有其他办法吗?

我还有关于操作栏样式的另一个问题,我想在按下时更改操作栏图标颜色(不是背景区域,而是替换图标)。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

第一,我不知道该怎么做。但第二,我可以帮助你。这根本不困难。

基本上,操作栏只是一个条形图,其中包含您在菜单按钮下设置的任何菜单选项。

因此,它是在应用程序启动时通过调用

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

任何选定的选项都会导致

@Override
public boolean onOptionItemSelected(MenuItem item) {
    ...
}
使用用户选择的菜单项调用

但是,还有第三种方法与选项菜单相关,选项菜单是您要用来更新操作的选项。它被称为onPrepareOptionsMenu(Menu menu)link)。在此方法中,允许更改使用onCreateOptionsMenu(...)创建的菜单。

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

现在,您将了解操作栏上的操作以及您希望它处于的状态。

但是等一下,应用程序启动时已经创建了操作栏。那么你如何重新创造呢?实际上很简单。您只需要拨打invalidateOptionsMenu()link)即可使其无效。这会导致Android重绘操作栏,并导致整行onCreateOptionsMenu(...) - &gt; onPrepareOptionsMenu(...)再次被召唤。

所以现在你拥有了所需的一切:

  1. 确定用户点击了哪些操作(onOptionsItemSelected(...)
  2. 您要保留的状态
  3. 如何重绘操作栏
  4. 重绘操作栏时,您可以更改操作栏上项目的图标,使其更新为您希望的状态。