我正在尝试使用Jetpack Compose重写我的项目UI。有没有想法在Android中使用Jetpack Compose添加弹出菜单?就像下面这个例子一样。
我尝试使用Stack()布局实现它,但结果并不理想。
@Composable
fun LiveDataComponentList(productList: List<Product>) {
AdapterList(data = productList) { product ->
Stack() {
Clickable(onClick = { PopupState.toggleOwner(product) }) {
Card(...) {...}
if (PopupState.owner == product) {
Surface(color = Color.Gray,modifier = Modifier.gravity(Alignment.TopEnd) + Modifier.padding(12.dp)) {
Column() {
Text("menu 1")
Text("menu 2")
Text("menu 3")
Text("menu 4")
Text("menu 5")
}
}
}
}
}
}
而 PopupState 是
@Model
object PopupState
{
var owner:Product?=null
fun toggleOwner(item:Product)
{
if(owner==item)
owner=null
else
owner=item
}
}
结果是
DropdownMenu
会放在一个Box
中,并与充当“锚点”的同级别元素配合使用。 在此示例中,DropdownMenu
使用IconButton
作为 *'anchor'*。 - Gabriele Mariotti