以编程方式在内部具有可绘制资源的形状
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));
目前我有一个操作栏菜单,里面的项目很少。
我正在尝试创建一个具有可绘制形状的菜单项
目前我得到的代码:
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));