因此,我在视图中有一个溢出菜单按钮,已将其转换为编辑按钮。这是按钮的XML代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".HomeActivity">
<item android:id="@+id/action_edit"
android:title="Edit"
android:icon="@drawable/editbutton"
app:showAsAction="always"/>
</menu>
我还在按下的编辑按钮上创建了一个Java函数,如下所示:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_edit:
floatIn.start();
fabImageButton.setTranslationX(-1 * fabOffset);
populateAnimators();
openAnimSet.start();
return true;
}
return super.onOptionsItemSelected(item);
}
我想做的是,当按下编辑按钮时,在onOptionsItemSelected内的case语句内是要更改菜单按钮的可绘制对象(从编辑可绘制对象到关闭可绘制对象),然后更改属性,以便如果按钮是在显示新的drawable时再次按下,将触发另一组Java代码。我在想以编程方式更改ID,然后添加另一个case语句?然后,当按下关闭编辑按钮时,需要将其转换回原始按钮。
谢谢
卡比尔
您可以通过执行以下操作更改菜单可绘制
item.findItem(R.id.my_menu_item).setIcon(R.drawable.my_drawable);
您可以通过多种方式来处理状态更改。更改id
似乎不是最好的解决方案。我正在通过使用枚举跟踪菜单可绘制菜单的状态来处理类似的情况。这是我处理类似问题的方法:
public void setMenuIconState(State state) {
switch (state) {
case READY:
mMenu.findItem(R.id.action_next).setIcon(R.drawable.small_arrow_green);
mReady = true;
break;
case WAITING:
mMenu.findItem(R.id.action_next).setIcon(R.drawable.small_clock_gray);
mReady = false;
break;
default:
mReady = false;
}
}
然后,当我单击菜单项时,我将按以下方式进行处理:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mReady) {
// do some stuff
}
else {
return super.onOptionsItemSelected(item);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句