以编程方式在内部具有可绘制资源的形状

shape with drawable resource inside programmatically

目前我有一个操作栏菜单,里面的项目很少。

我正在尝试创建一个具有可绘制形状的菜单项

目前我得到的代码:

ShapeDrawable circle = new ShapeDrawable(new OvalShape());
        circle.getPaint().setColor(Color.GREEN);
        circle.setIntrinsicHeight(120);
        circle.setIntrinsicWidth(120);

        circle.setBounds(0, 0, 120, 120);

        menu.findItem(R.id.menu_item_1).setIcon(circle);

不过目前看起来只是一个绿色圆圈,我希望里面有一个可绘制的图标。

对于example

只需在 drawable 文件夹中创建 icon.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <solid
                android:color="@color/colorPrimaryDark"/>

            <size
                android:width="70dp"
                android:height="70dp"/>
        </shape>
    </item>

    <item android:drawable="@android:drawable/ic_dialog_map"  android:gravity="center">
    </item>
</layer-list>

并像这样使用它:

 menu.findItem(R.id.menu_item_1).setIcon(ContextCompat.getDrawable(this, R.drawable.icon));