我使用以下代码B单击按钮以打开PopupMenu
。PopupMenu
包括“编辑”,“删除”和“设置”项目。
我希望“编辑”和“删除”项在没有记录时被禁用或消失,也许就像代码A,我该如何编写代码?
代码A
popup.setOnMenuItemBeforePopup {
if (recordCount==0){
R.id.popMenuMoreEdit.disable
R.id.popMenuMoreDelete.disbale
}
}
代码B
private fun setControls(){
btnMore.setOnClickListener (View.OnClickListener { v -> showPopup(v, mContext) })
}
fun showPopup(v: View, mContext: Context) {
val popup = PopupMenu(mContext, v)
popup.inflate(R.menu.menu_more)
popup.setOnMenuItemClickListener {
item -> handleMenu(item, mContext)
}
popup.show()
}
private fun handleMenu(item: MenuItem, mContext: Context): Boolean {
when (item.itemId) {
R.id.popMenuMoreEdit -> {
return true
}
R.id.popMenuMoreDelete -> {
return true
}
R.id.popMenuMoreBackupSetting-> {
return true
}
}
return false
}
最佳答案
您只需要在MenuItem
中获取PopupMenu
实例,并在适当的时候将它们设置为启用/禁用即可。
例如(假设您的PopupMenu
实例称为popup
):
popup.inflate(R.menu.menu_more)
// ...
if (recordCount == 0){
// assuming popMenuMoreEdit and popMenuMoreDelete are item IDs in menu_more
popup.menu.findItem(R.id.popMenuMoreEdit).isEnabled = false
popup.menu.findItem(R.id.popMenuMoreDelete).isEnabled = false
}
关于android - 如何在Kotlin中禁用某些PopupMenu项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49785913/