Java android操作栏样式(拆分样式和按下菜单项)

Java android操作栏样式(拆分样式和按下菜单项),java,android,android-layout,android-actionbar,android-styles,Java,Android,Android Layout,Android Actionbar,Android Styles,我设置了动作栏的背景,但在分割模式下背景不起作用 我知道我必须设置: <item name="android:backgroundSplit">@drawable/some_drowable</item> @draawable/some\u drowable 但它在Api级别11中不起作用 还有别的办法吗 我还有一个关于动作栏样式的问题,我想在按下时更改动作栏图标的颜色(不是背景区域,而是替换图标)。我该怎么做呢?首先,我不知道怎么做。但是第二,我可以帮你。一点也不难

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

我知道我必须设置:

<item name="android:backgroundSplit">@drawable/some_drowable</item>
@draawable/some\u drowable
但它在Api级别11中不起作用

还有别的办法吗


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

首先,我不知道怎么做。但是第二,我可以帮你。一点也不难

基本上,操作栏只是一个带有任何菜单选项的栏,否则您将在菜单按钮下设置这些选项

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    ...
}
任何选择的选项都会导致

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

但是,还有第三种方法与“选项”菜单相关,即您要用于更新操作的方法。它被称为
onprepareOptions菜单(菜单菜单)
()。在此方法中,允许更改使用
onCreateOptions菜单(…)
创建的菜单

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

现在,您将知道在操作栏上点击了哪个操作,以及您希望它处于的状态

但是,请稍候,应用程序启动时已经创建了操作栏。那么,您是如何使it重新创建的呢?其实很简单。您只需调用
invalidateOptions功能表()
()即可使其失效。这会导致Android重新绘制操作栏,并导致再次调用整行onCreateOptions菜单(…)->
onPrepareOptions菜单(…)

现在您已经拥有了所需的一切:

  • 确定用户点击了哪些操作(
    onOptions ItemSelected(…)
  • 你想保持什么状态
  • 如何重新绘制操作栏

  • 重新绘制操作栏时,您可以更改操作栏上项目的图标,使其更新为您希望的状态。

    谢谢,但没有最简单的方法?我认为类似于onpressed=“icon\u pressed”在样式xmlNope中,动作栏是静态的,当它被创建和绘制时,在它得到重新绘制的调用之前,您无法对其进行更改。我有不同的活动和不同的菜单项,因此我必须为它编写大量代码。如果您有不同的菜单项,那么您应该已经实现了上述3种方法中的2种ems在不同的活动中。我认为添加第三个不需要太多。;)检查值,值-11,值-14文件夹应用相同的样式?谢谢,我现在只能为api 14设置backgroundsplit,并且可以工作了!使用api应用程序的用户