我正在尝试使用滑行以编程方式将图像添加到菜单项。
main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_profile_pic"
android:icon="@mipmap/profile_pic"
android:orderInCategory="100"
android:title=""
app:showAsAction="always" />
Java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_menu, menu);
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.mipmap.profile_pic);
requestOptions.error(R.mipmap.profile_pic);
MenuItem itemProfilePic = menu.getItem(0);
//View view = findViewById(R.id.action_profile_pic);
if (savedProfilePic != null) {
Glide.with(this)
.setDefaultRequestOptions(requestOptions)
.load(Uri.parse(savedProfilePic))
.into(itemProfilePic);
}
return true;
但是,由于资源是MenuItem而不是ImageView,所以我不能使用这种方法。将其投射到ImageView也不起作用。
鉴于图像不在drawables文件夹中,而是由用户设置,如何获得所需的结果,因此也无法使用以下方法:
itemProfilePic.setActionView(savedProfilePic);
接受一个整数值
最终结果
答案 0 :(得分:0)
制作一个自定义工具栏,然后您可以使用图像视图动态更改图像
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
app:contentInsetStart="0dp"
android:background="@color/primaryColor"
android:layout_height="wrap_content" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:src="@drawable/ic_perm_24dp"
android:layout_alignParentEnd="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
</android.support.v7.widget.Toolbar>
答案 1 :(得分:0)
MenuItem
接口具有一种方法:setIcon(Drawable d)
。
MenuItem
的引用。BitmapDrawable
。 MenuItem.setIcon()
方法进行设置。似乎您也可以从正在使用的图像加载器库中实现custom target。自定义目标可以包装MenuItem
。
注意: 由于您要夸大XML菜单,因此很有可能会刷新它。因此,还要在扩展XML后执行图像图标更新。