我想定制ActionBarSherlock。所以,我尝试使用带透明背景的ActionButton选择器。这是选择器代码:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="@drawable/nav_bouton_recherche_pushed"/>
<item
android:drawable="@drawable/nav_bouton_recherche"/>
</selector>
这是菜单代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/selection_menu_search"
android:icon="@drawable/search_button_selector"
android:title="@string/action_bar_search"
android:showAsAction="always"
/>
</menu>
当我按下任何动作按钮时,其背景变为蓝色。 我试图将默认背景更改为透明。这是我的风格:
<style name="Theme.MyStyle" parent="Theme.Sherlock.Light">
<item name="actionBarStyle">@style/Widget.MyStyle.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.MyStyle.ActionBar</item>
<item name="android:actionBarItemBackground">@android:color/transparent</item>
</style>
我遇到了以下问题:如果我在应用程序启动后立即按下操作按钮,那么它工作正常!但是后来,如果我按下溢出按钮,那么当按下它时,动作按钮将停止改变可绘制。
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
在XML文件中只有属性android:icon,它允许你使用图标,而不是选择器,并且应该在代码中创建此菜单。 覆盖onCreateOptionsMenu,在其中创建所需的菜单。
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
SubMenu subMenu = menu.addSubMenu("one");
subMenu.add("one_one");
MenuItem item = subMenu.getItem();
item.setIcon(R.drawable.test_selector);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return super.onCreateOptionsMenu(menu);
}
test.selector:
<?xml version="1.0" encoding="utf-8"?>
<item
android:drawable="@drawable/test_shape_pressed"
android:state_pressed="true"/>
<item
android:drawable="@drawable/test_shape"
android:state_pressed="false"/>