Android操作栏菜单:防止按下颜色

Android操作栏菜单:防止按下颜色,android,android-actionbar,android-resources,Android,Android Actionbar,Android Resources,在我的android应用程序中,当我按下actionbar菜单时,它会发出蓝色的光芒。我怎样才能防止它发生 是否可以只对一个菜单执行此操作,而对其他菜单保持运行 <style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:background">@drawable/action_bar_background</item>

在我的android应用程序中,当我按下actionbar菜单时,它会发出蓝色的光芒。我怎样才能防止它发生

是否可以只对一个菜单执行此操作,而对其他菜单保持运行

<style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar">
    <item name="android:background">@drawable/action_bar_background</item>
    <item name="android:selectableItemBackground">@android:color/transparent</item>
</style>

@可绘制/动作条\背景
@android:彩色/透明

您可以通过在代码中设置自定义ActionView来更改特定操作栏项目的选择器:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.activity_main, menu);
MenuItem menuItem = menu.findItem(R.id.menu_include_location);
ImageView image = new ImageView(this);
image.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
        LayoutParams.MATCH_PARENT));
image.setImageResource(R.drawable.ic_launcher);
image.setBackgroundResource(R.drawable.icon_place_selector);
image.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // ...
    }
});
menuItem.setActionView(image);
return true;
}
您可以在icon_place_selector.xml中为按下的状态使用透明颜色

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Pressed -->
<item android:state_pressed="true" android:drawable="@android:color/transparent" />
</selector>

您可以通过在代码中设置自定义ActionView来更改特定操作栏项目的选择器:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.activity_main, menu);
MenuItem menuItem = menu.findItem(R.id.menu_include_location);
ImageView image = new ImageView(this);
image.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
        LayoutParams.MATCH_PARENT));
image.setImageResource(R.drawable.ic_launcher);
image.setBackgroundResource(R.drawable.icon_place_selector);
image.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // ...
    }
});
menuItem.setActionView(image);
return true;
}
您可以在icon_place_selector.xml中为按下的状态使用透明颜色

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Pressed -->
<item android:state_pressed="true" android:drawable="@android:color/transparent" />
</selector>

您还可以通过actionLayout属性为每个菜单项创建布局,如下所示

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/search_options"
    android:actionLayout="@layout/search_layout"
    android:icon="@drawable/app_bar_icon_search"
    android:showAsAction="ifRoom|collapseActionView"
    android:title="@string/menu_home"
    android:visible="false"/>
<item
    android:id="@+id/current_folder_options"
    android:showAsAction="ifRoom"
    android:title="@string/menu_folder_options"
    android:actionLayout="@layout/menu_folder_options_layout" />
<item
    android:id="@+id/menu_slide_out"
    android:actionLayout="@layout/ab_insigh_icon"
    android:showAsAction="always"
    android:title="@string/menu_slide"/>

</menu>

其中一个菜单项*menu\u folder\u options\u layout.xml*的操作布局就是我使用选择器的位置

 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="match_parent" >
 <ImageButton
    android:id="@+id/menu_option_image"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:src="@drawable/app_bar_icon_folder_options"
    android:background="@drawable/appbar_press_selector" />
</RelativeLayout>

您还可以通过actionLayout属性为每个菜单项创建布局,如下所示

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/search_options"
    android:actionLayout="@layout/search_layout"
    android:icon="@drawable/app_bar_icon_search"
    android:showAsAction="ifRoom|collapseActionView"
    android:title="@string/menu_home"
    android:visible="false"/>
<item
    android:id="@+id/current_folder_options"
    android:showAsAction="ifRoom"
    android:title="@string/menu_folder_options"
    android:actionLayout="@layout/menu_folder_options_layout" />
<item
    android:id="@+id/menu_slide_out"
    android:actionLayout="@layout/ab_insigh_icon"
    android:showAsAction="always"
    android:title="@string/menu_slide"/>

</menu>

其中一个菜单项*menu\u folder\u options\u layout.xml*的操作布局就是我使用选择器的位置

 <?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="match_parent" >
 <ImageButton
    android:id="@+id/menu_option_image"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:src="@drawable/app_bar_icon_folder_options"
    android:background="@drawable/appbar_press_selector" />
</RelativeLayout>



您需要在标签@android:color中的style.xml中更改样式/transparent@shylendra只能为一个菜单而不能为其他菜单执行此操作吗?@shylendra我添加了代码(请检查我的编辑),但仍会显示蓝色光芒。@shylendra这也会更改所有可选UI组件的背景。但他只想更改一个按钮如果您只想更改菜单项的颜色,请参考此链接,您需要在tag:@android:color中的style.xml中更改样式/transparent@shylendra只能为一个菜单而不能为其他菜单执行此操作吗?@shylendra我添加了代码(检查我的编辑)但我仍然会看到蓝色的光芒。@shylendra这也会改变所有可选UI组件的背景。但是他只想更改一个按钮,如果您只想更改菜单项的颜色,请参考此链接,您是否正在使用image.setImageResource(R.drawable.ic_launcher);在您的代码中。。不仅是选择器,还应该同时使用image.setImageResource(R.drawable.ic_启动器);和image.setBackgroundResource(R.drawable.icon_place_selector);:)太棒了,成功了!非常感谢。也可以通过样式完成吗?谢谢…您可以通过actionLayout属性为每个菜单项创建一个布局,并在该布局中提供选择器/样式。您可以提供相应的代码吗?我不得不这样做,但不断出现错误。请检查我下面的答案,您面临哪些错误,请您解释一下?您是否使用image.setImageResource(R.drawable.ic_launcher);在您的代码中。。不仅是选择器,还应该同时使用image.setImageResource(R.drawable.ic_启动器);和image.setBackgroundResource(R.drawable.icon_place_selector);:)太棒了,成功了!非常感谢。也可以通过样式完成吗?谢谢…您可以通过actionLayout属性为每个菜单项创建一个布局,并在该布局中提供选择器/样式。您可以提供相应的代码吗?我不得不这样做,但不断出现错误。请检查我下面的答案,你面临的错误是什么,你能解释一下吗?谢谢,我尝试了这个,它看起来和Java解决方案一样,但当我点击它时,什么都没有发生。我尝试将“onClick”和“clickable”属性添加到ImageButton中,但它会使应用程序崩溃。谢谢,我尝试了这个方法,它看起来与Java解决方案相同,但单击它时什么也没发生。我试图将“onClick”和“clickable”属性添加到ImageButton中,但它使应用程序崩溃。