KotlinLeaner
02/03/2023, 8:07 PMIconButton
in my project. I am opening Dialog
when I am click on IconButton
. Whenever I clicked on IconButton
the dialog opens and IconButton
little bit shifts other side and back to position when Dialog
close. You can see in this . So what is the problem of this? I want to avoid this..KotlinLeaner
02/03/2023, 8:07 PM@Composable
fun OptionItemStateFul() {
val isOptionItemClickAction = remember { mutableStateOf(false) }
OptionItemStateLess(isOptionItemClickAction) {
DialogOptionsView(
openDialogCustom = isOptionItemClickAction,
dialogOptionsData = DialogOptionsData(headerText = "Hi There", itemsList = listOf(1, 2)),
)
}
}
OptionItemStateLess
@Composable
fun OptionItemStateLess(
isOptionItemClickAction: MutableState<Boolean>,
onOptionItemClickAction: @Composable () -> Unit,
) {
Row(
modifier = Modifier.fillMaxSize(),
horizontalArrangement = Arrangement.spacedBy(5.dp),
verticalAlignment = Alignment.CenterVertically,
) {
Text(
text = " itemName 1 item 2",
modifier = Modifier
.padding(vertical = 13.dp)
.weight(1f),
maxLines = 1,
overflow = TextOverflow.Ellipsis
)
OptionItemLabel(isOptionItemClickAction, onOptionItemClickAction)
}
}
OptionItemLabel
@Composable
fun OptionItemLabel(
isOptionItemClickAction: MutableState<Boolean>,
onOptionItemClickAction: @Composable () -> Unit
) {
IconButton(
modifier = Modifier.padding(end = 10.dp),
onClick = { isOptionItemClickAction.value = true }
) {
Icon(
painter = painterResource(R.drawable.ic_menu),
contentDescription = null,
tint = Aqua,
)
}
AnimatedVisibility(isOptionItemClickAction.value) {
onOptionItemClickAction()
}
}
PreviewOptionItemStateFul
@Preview(showBackground = true)
@Composable
fun PreviewOptionItemStateFul() {
OptionItemStateFul()
}
ThanksKirill Grouchnikov
02/03/2023, 9:14 PMModifier.background
of your composables. Set red on the row, blue on the text and green on the icon button. Verify that their bounds and paddings match what you expect. Then see how those color areas move / shift when the dialog is shown.Kirill Grouchnikov
02/03/2023, 9:15 PM