我有带多个菜单项的导航抽屉.当我点击任何项目时,它会被选中(收件箱),并带有突出显示的 colored颜色 .之后,如果我点击一些其他项目(标记的邮件),它也会以突出显示的 colored颜色 被选中.但之前 Select 的(收件箱)应该被清除(突出显示的 colored颜色 应该消失).
Only one item should be shown as Highlighted at a time . In my case both items are being highlighted as selected .
@Composable
fun DrawerItem(
folderItem: NewFolderTableData,
index: Int,
navigationState: DrawerState,
submenuList: ImmutableList<NewFolderTableData> =
emptyList<NewFolderTableData>().toImmutableList(),
onMenuClick: (String)->Unit
) {
val scope = rememberCoroutineScope()
var selectedItemIndex by rememberSaveable {
mutableStateOf("")
}
var showMoreSubMenu by rememberSaveable {
mutableStateOf(false)
}
var showInboxSubMenu by rememberSaveable {
mutableStateOf(false)
}
val title = if (folderItem.foldername == Const.MailFolder.TYPE_FOLDER_MAIL_SHOW_MORE) {
if (!showMoreSubMenu) {
Const.MailFolder.TYPE_FOLDER_MAIL_SHOW_MORE
} else {
Const.MailFolder.TYPE_FOLDER_MAIL_HIDE_MORE
}
} else {
folderItem.foldername
}
NavigationDrawerItem(label = {
Text(text = title)
}, selected = title == selectedItemIndex, onClick = {
onMenuClick(folderItem.foldername)
if (folderItem.foldername == Const.MailFolder.TYPE_FOLDER_MAIL_SHOW_MORE) {
showMoreSubMenu = !showMoreSubMenu
} else {
selectedItemIndex = title
scope.launch {
navigationState.close()
}
}
}, icon = {
val iconId = getFolderIcons(folderItem.foldername)
if (iconId != -1) {
Image(
painterResource(id = iconId),
contentDescription = folderItem.foldername
)
}
}, badge = {
if (folderItem.foldername.equals(
Const.MailFolder.TYPE_FOLDER_MAIL_SHOW_MORE,
ignoreCase = true
)
) {
if (!showMoreSubMenu) {
SetRightIcon(vector = Icons.Outlined.KeyboardArrowDown, foldername = folderItem.foldername){
}
} else {
SetRightIcon(vector = Icons.Outlined.KeyboardArrowUp, foldername = folderItem.foldername){
}
}
} else if (folderItem.foldername.equals(
Const.MailFolder.TYPE_FOLDER_MAIL_INBOX,
ignoreCase = true
) && submenuList.isNotEmpty()
) {
if(!showInboxSubMenu){
SetRightIcon(vector = Icons.Outlined.KeyboardArrowDown, foldername = folderItem.foldername){
showInboxSubMenu = !showInboxSubMenu
}
}else{
SetRightIcon(vector = Icons.Outlined.KeyboardArrowUp, foldername = folderItem.foldername){
showInboxSubMenu = !showInboxSubMenu
}
}
} else if (folderItem.foldername.equals(
Const.MailFolder.TYPE_FOLDER_MAIL_TRASH,
ignoreCase = true
) || folderItem.foldername.equals(
Const.MailFolder.TYPE_FOLDER_MAIL_JUNK, ignoreCase = true
)
) {
SetRightIcon(vector = Icons.Filled.Delete, foldername = folderItem.foldername){
}
}else if(folderItem.foldername.equals(Const.MailFolder.TYPE_FOLDER_MAIL_ADD, ignoreCase = true)){
SetRightIcon(vector = Icons.Filled.Add, foldername = folderItem.foldername){
}
}
}, modifier = Modifier.padding(NavigationDrawerItemDefaults.ItemPadding)
)
AnimatedVisibility(visible = showMoreSubMenu || showInboxSubMenu) {
DrawSubMenu(subList = submenuList, navigationState)
}
}