我正在寻找 mentuItem.setShowAsAction()的免费方法,即 menuItem.getShowAsAction(),因为它似乎不是一个。
http://developer.android.com/reference/android/view/MenuItem.html
因为我需要在将它们设置为MenuItem.SHOW_AS_ACTION_NEVER之前记录当前状态,所以当设备的方向变回横向时,我可以将菜单项返回到旧状态。
我需要这样做,因为Honeycomb没有提供新行来显示ICS中的标签。因此,在蜂窝状中,标签没有足够的空间。
在Java或Android中是否有另一个通用的get属性方法,以在menuitem中的属性showAsAction中查找XML中的设置。
感谢
答案 0 :(得分:1)
我发现下面的类有这个方法 isActionButton()
<强> android.support.v7.internal.view.menu.MenuItemImpl 强>
请注意 MenuItem 是一个界面,而不是创建所谓的menuitem对象实例的类。
如果您使用的是android.support.v7兼容包,只需将menuitem对象强制转换为 MenuItemImpl 。
这样做:
((MenuItemImpl)item).isActionButton()
答案 1 :(得分:1)
你可以使用这个方法,从另一个答案中说的是:
@SuppressLint("RestrictedApi")
private int getShowAsActionFlag(MenuItem item) {
MenuItemImpl itemImpl = ((MenuItemImpl) item);
if (itemImpl.requiresActionButton()) return MenuItemImpl.SHOW_AS_ACTION_ALWAYS;
else if (itemImpl.requestsActionButton()) return MenuItemImpl.SHOW_AS_ACTION_IF_ROOM;
else if (itemImpl.showsTextAsAction()) return MenuItemImpl.SHOW_AS_ACTION_WITH_TEXT;
else return MenuItemImpl.SHOW_AS_ACTION_NEVER;
}
答案 2 :(得分:1)
如果有人愿意,这里是扩展名
val MenuItem.showAsActionFlag: Int
@SuppressLint("RestrictedApi")
get() {
this as MenuItemImpl
return when {
requiresActionButton() -> MenuItemImpl.SHOW_AS_ACTION_ALWAYS
requestsActionButton() -> MenuItemImpl.SHOW_AS_ACTION_IF_ROOM
showsTextAsAction() -> MenuItemImpl.SHOW_AS_ACTION_WITH_TEXT
else -> MenuItemImpl.SHOW_AS_ACTION_NEVER
}
}
您可以像使用它
if (item.showAsActionFlag == SHOW_AS_ACTION_ALWAYS)