更改工具栏操作项背景颜色

时间:2016-01-05 12:27:55

标签: android android-toolbar android-styles android-menu

如何更改工具栏中的菜单操作项背景颜色?

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

    <item
        android:id="@+id/my_action"
        android:icon="@mipmap/icon"
        android:title="@string/title"
        app:showAsAction="always" />
</menu>

然后在我的活动中:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_actions, menu);

    final MenuItem item = menu.findItem(R.id.my_action);

    MenuItemCompat.getActionView(item).setBackgroundColor(ContextCompat.getColor(this, R.color.red));

    return super.onCreateOptionsMenu(menu);

}

这不起作用,因为getActionView总是返回null。

2 个答案:

答案 0 :(得分:0)

我们走了:

onCreateOptionsMenu()

您可以在@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); changeActionMenuItemsBackground(Color.BLACK); return true; } 或更晚的

中调用它
<ul id="type_master">
    <li class="type_file">file</li>
    <li class="type_dir">folder
        <ul>
            <li class="type_file">file</li>
            <li class="type_dir">folder
                <ul>
                    <li class="type_file">file</li>
                </ul>
            </li>
        </ul>
    </li>
    <li class="type_file">file</li>
</ul>

我希望,这有帮助

答案 1 :(得分:0)

getActionView()在我的情况下有来自setActionView()的自定义actionView时正在运行。

创建一个布局并将其设置为菜单项的操作视图,如下所示:

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.new_menu, menu);
    MenuItem item = menu.findItem(R.id.my_action);
    View myView = LayoutInflater.from(this).inflate(R.layout.menu_item_layout, null);
    ((ImageView) myView.findViewById(R.id.btnEdit)).setOnClickListener(this);
    item = MenuItemCompat.setActionView(item, myView);
    MenuItemCompat.getActionView(item).setBackgroundColor(ContextCompat.getColor(this, R.color.blue));
    return true;
}

menu_item_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/btnEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/red"
android:minHeight="0dp"
android:minWidth="0dp"
android:src="@drawable/img_edt" />

像这样你可以在getActionView(item).setBackgroundColor(..)或menu_item_layout.xml文件中设置颜色。