如何自定义android工具栏上的搜索图标?

时间:2016-04-21 08:05:08

标签: android

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:appcompat="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_search"
        android:icon="@drawable/search"
        appcompat:actionViewClass="android.support.v7.widget.SearchView"
        appcompat:showAsAction="ifRoom"
        android:title="Search"/>
</menu>

我想更改右上角的search image,目前它是黑色的,我想将其更改为橙色

4 个答案:

答案 0 :(得分:1)

@Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_notifications, menu);
            this.menu = menu;
            super.onCreateOptionsMenu(menu);
            return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
            if (id == R.id.action_clear_all) {
                showToast("Clear All");
                return true;
            }
            return super.onOptionsItemSelected(item);
        }

在res&gt;菜单下创建xml文件。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".YourActivityName" >

    <item
        android:id="@+id/action_clear_all"
        android:title="@string/noti_clear_all"
        android:icon="@drawable/ic_clear_all"
        android:orderInCategory="100"
        app:showAsAction="ifRoom" />

</menu>

答案 1 :(得分:1)

您可以按setColorFilter重置MenuItem的颜色。

Drawable可以更改为任何颜色。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.menu_menu_frag, menu);
    // replace MenuItem with your own
    MenuItem item = menu.getItem(0);
    final Drawable drawable = item.getIcon();
    if (drawable != null) {
        final int color = Color.RED;
        drawable.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN));
    }
}

答案 2 :(得分:0)

onCreateOptionsMenu(Menu menu, MenuInflater inflater)中您可以使用此:
注意:您可能希望使用PorterDuff.Mode.SRC_IN代替PorterDuff.Mode.MULTIPLY

MenuItem searchItem = menu.findItem(R.id.action_search);
int color = 0; // SPECIFY THE COLOUR YOU WANT HERE. I suggest you retrieve colour from colors.xml
menuItem.getIcon().setColorFilter(color, PorterDuff.Mode.MULTIPLY);

但我个人可能只是手动改变抽屉的颜色(即用彩色涂料替换抽屉)。

答案 3 :(得分:0)

在菜单项

中使用以下XML
<item
        android:id="@+id/menu_search"
        android:actionViewClass="android.widget.SearchView"
        android:icon="@drawable/search"
        android:showAsAction="ifRoom|collapseActionView"
        android:title="@string/menu_search" />

//请确保您在活动或片段中使用相同的菜单项xml。