android - 如何禁用 Kotlin 中的某些 PopupMenu 项?

标签 android kotlin

我使用以下代码 B 单击按钮打开 PopupMenu

PopupMenu 包括编辑、删除和设置项。

希望在没有记录的时候,Edit和Delete项被禁用或者消失,可能是代码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
    }

最佳答案

您只需在 PopupMenu 中获取 MenuItem 实例,并在适当的时候将它们设置为启用/禁用。

例如(假设您的 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/

相关文章:

android - Kotlin:SumbyDouble 返回附加小数

android - 手机休眠时不会调用 onMessageReceived

android - 为我的项目获取gradle错误多个dex文件定义了Lcom/google/android/gms/common/api/zze

javascript - 未捕获( promise )错误 : "Device" plugin is not implemented on android

java - 任务 :app:buildInfoGeneratorDebug 中的 "Supertypes of the following classes cannot be resolved.”

android - kotlin sqlite 创建两个表

android - TextWatcher无法正常使用Android Studio Kotlin

android - 您如何测试Android 6.0的完整备份行为?

android - 通过Kotlin使用Intent Extras获取房间数据

android - 没有向 HAL 提供足够的数据,预期位置