UPD: Use Scaffold as anchor

This commit is contained in:
sebastian 2025-05-10 09:33:51 +02:00
parent 4a44f99b86
commit d6588913fd

View File

@ -1,27 +1,15 @@
package come.stormborntales.notevault.ui.screens
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.MoreVert
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.FabPosition
import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@ -31,66 +19,47 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.boundsInWindow
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.layout.positionInWindow
import androidx.compose.ui.text.input.KeyboardType.Companion.Text
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Popup
@Composable
fun NotesScreen() {
var expanded by remember { mutableStateOf(false) }
var menuExpanded by remember { mutableStateOf(false) }
// Anchor reference
Box(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
contentAlignment = Alignment.BottomEnd
) {
// This Box will be the anchor for the menu
Box {
var anchor by remember { mutableStateOf<androidx.compose.ui.geometry.Rect?>(null) }
Scaffold(
floatingActionButton = {
Box {
FloatingActionButton(onClick = { menuExpanded = true }) {
Icon(Icons.Default.Add, contentDescription = "Open menu")
}
FloatingActionButton(
onClick = { expanded = true },
modifier = Modifier
.onGloballyPositioned { coordinates ->
anchor = coordinates.boundsInWindow()
}
) {
Icon(Icons.Default.MoreVert, contentDescription = "Open menu")
}
anchor?.let {
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
// This attaches the dropdown directly to the FAB
offset = DpOffset(0.dp, 0.dp),
expanded = menuExpanded,
onDismissRequest = { menuExpanded = false },
modifier = Modifier
.align(Alignment.TopEnd)
.wrapContentWidth()
) {
DropdownMenuItem(
text = { Text("Option 1") },
onClick = {
expanded = false
// Handle Option 1
menuExpanded = false
// Handle action
}
)
DropdownMenuItem(
text = { Text("Option 2") },
onClick = {
expanded = false
// Handle Option 2
menuExpanded = false
// Handle action
}
)
}
}
},
content = { innerPadding ->
// Dein Hauptinhalt hier, falls benötigt
Box(modifier = Modifier
.fillMaxSize()
.padding(innerPadding)) {
Text("Inhalt deiner App", modifier = Modifier.align(Alignment.Center))
}
}
}
)
}