gpt4 book ai didi

android - 方向改变后 MenuItem alpha 值丢失

转载 作者:行者123 更新时间:2023-11-29 16:02:21 27 4
gpt4 key购买 nike

问题

在 Android 版本 < 4.1 上,MenuItem 的 alpha 值在方向更改后被重置,但它仍然处于禁用状态。

我正在使用的代码

DetailsFragment.java

public class DetailsFragment extends SherlockFragment {
private MenuItem miEmail;
...
@Override
public void onPrepareOptionsMenu(Menu menu) {
miEmail= menu.findItem(R.id.menu_email);
super.onPrepareOptionsMenu(menu);
}

private void populateDetails(final Detail oDetail) {
//disable email button if dealer doesn't have option
if(!oDetail.bShowSAM){
miEmail.setEnabled(false);
miEmail.getIcon().setAlpha(50);
}
...
}
}

我的 list .xml

<activity
android:name=".activities.DetailsActivity"
android:uiOptions="splitActionBarWhenNarrow"
android:configChanges="keyboardHidden|screenSize|orientation">
</activity>

我期望发生什么

当方向改变时,miEmail 仍然被禁用并且 alpha 值仍然是 50。

实际发生了什么

在旧设备 (2.3,4.0) 上进行测试时,MenuItem 仍处于禁用状态,但 alpha 值正在重置为默认值。当使用我的 >4.1 的设备进行测试时,它按预期工作。

我尝试过的

用谷歌搜索问题......

我试图避免使用 android:configChanges="..." 并通过 savedInstanceState 处理数据,但我了解到你不能使 MenuItem 可序列化/parciable,因此不允许我通过 outState 包对象传递它。

我是 Android 开发的新手,我觉得好像有一种处理此 MenuItem 的简单方法,但我想不出还有什么方法可以处理它。

您认为问题是什么?

任何反馈将不胜感激。

最佳答案

不要在您的自定义函数上设置图标 alpha,而是在 OnPrepareOptionsMenu 上设置它(使用合适的条件)。您可以在 savedinstancestate 上传递一个 bool 值,说明它是否应该变灰。

在您的 populateDetails 函数中,您将调用 invalidateOptionsMenu() 以使 android 重新制作操作栏图标。示例:

private boolean buttonEnabled;
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem miEmail= menu.findItem(R.id.menu_email);
if (buttonEnabled) {
miEmail.setEnabled(true);
miEmail.getIcon().setAlpha(255);
}else{
miEmail.setEnabled(true);
miEmail.getIcon().setAlpha(50);
}
return super.onPrepareOptionsMenu(menu);
}
private void populateDetails(final Detail oDetail) {
//disable email button if dealer doesn't have option
if(!oDetail.bShowSAM){
buttonEnabled = false;
InvalidateOptionsMenu();
}
...
}
}

如果您使用支持库来实现兼容性,请改用 supportInvalidateOptionsMenu。

顺便说一句,千万不要使用方向标签来“修复”问题,如果您长时间退出应用程序然后尝试打开它,问题仍然会出现。 (android 最初会暂停 Activity 并会在一段时间后停止)

关于android - 方向改变后 MenuItem alpha 值丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22946562/

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