контекстное меню реализовано с помощью Android Compose DropDownMenu следующим образом:
элемент списка xml содержит это представление
Код: Выделить всё
Код: Выделить всё
getChildViewКод: Выделить всё
val showDropDownMenuState = MutableStateFlow(false)
ui.ivCustomButton.setOnClickListener {
showDropDownMenuState.value = true
onCustomButtonClick(customButton, showDropDownMenuState)
}
Код: Выделить всё
private fun onContextMenuClick(showDropDownMenuState: MutableStateFlow) {
ui.cvCustomButtonDdm.apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
val showDropDownMenu by showDropDownMenuState.collectAsStateWithLifecycle()
SideEffect {
println("showDropDownMenu = $showDropDownMenu")
}
ItemSettingsDdm(
showDropDownMenu = showDropDownMenu,
myDataItem = myDataItem!!,
onAllocated = { myDataItem?.let { onAllocatedCallback?.invoke(it) } },
onCompleted = {
myDataItem?.let {
onProgressCompletedClickCallback?.onProgressCompleted(
it
)
}
},
onDeleted = {
if (!isReadOnly) {
val dialog = FDeleteItemUniversal()
.withTitle(context.getString(R.string.delete_myDataItem_label))
.withMessage(context.getString(R.string.delete_myDataItem))
dialog.setItemToDelete(myDataItem)
onDeletedCallback?.let { dialog.setCallback(it) }
dialog.show(context.toAppActivity()?.supportFragmentManager)
} else {
context.err(R.string.myDataItem_is_readonly)
}
},
onDismissRequest = {
showDropDownMenuState.value = false
}
)
}
}
}
р>
Код: Выделить всё
showDropDownMenu = true
showDropDownMenu = false
showDropDownMenu = true
showDropDownMenu = false
showDropDownMenu = true
showDropDownMenu = false
showDropDownMenu = true
showDropDownMenu = false
showDropDownMenu = false
showDropDownMenu = true
почему val showDropDownMenuState = MutableStateFlow(false) путается?
что я сделал не так, чтобы достичь этой «функции»?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ot-dismiss
Мобильная версия