gpt4 book ai didi

java - 如何以编程方式更改菜单溢出按钮?

转载 作者:行者123 更新时间:2023-12-01 11:47:58 24 4
gpt4 key购买 nike

所以我在 View 中有一个溢出菜单按钮,我已将其转换为编辑按钮。以下是该按钮的 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 语句内更改菜单按钮的可绘制对象(从编辑可绘制对象到关闭可绘制对象),然后更改属性,以便如果当新的可绘制对象显示时,再次按下按钮,会触发一组不同的 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);
}
}

关于java - 如何以编程方式更改菜单溢出按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29006791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com