From 89e35a1933ba40513a96572b27291c0aa65c918c Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Sat, 11 Oct 2025 10:21:42 +0000
Subject: [PATCH] 框架优化
---
libmvi/src/main/java/com/runt/open/mvi/views/PublicViews.kt | 33 ++++++++++++++++++++++++++++++---
1 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/libmvi/src/main/java/com/runt/open/mvi/views/PublicViews.kt b/libmvi/src/main/java/com/runt/open/mvi/views/PublicViews.kt
index 6cf1b26..0208e22 100644
--- a/libmvi/src/main/java/com/runt/open/mvi/views/PublicViews.kt
+++ b/libmvi/src/main/java/com/runt/open/mvi/views/PublicViews.kt
@@ -29,8 +29,10 @@
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.layout.Layout
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.window.Dialog
@@ -44,6 +46,32 @@
* @purpose
* @date 5/18/25
*/
+
+/**
+ * 超出父容器
+ */
+@Composable
+fun UnboundedBox(
+ modifier: Modifier = Modifier,
+ content: @Composable () -> Unit
+) {
+ Layout(content, modifier) { measurables, parent ->
+ // 给子树宽高用"无限"上限测量
+ val loose = Constraints(
+ minWidth = 0, minHeight = 0,
+ maxWidth = Int.MAX_VALUE, maxHeight = Int.MAX_VALUE
+ )
+ val placeables = measurables.map { it.measure(loose) }
+
+ // 自己仍按父约束的大小布局(不撑爆父)
+ val w = parent.maxWidth
+ val h = parent.maxHeight
+ layout(w, h) {
+ // 放在(0,0)。如需往外探出,可用负偏移:placeRelative(-50, 0)
+ placeables.forEach { it.placeRelative(0, 0) }
+ }
+ }
+}
@Composable
fun LoadingDialog( loadingState : LoadingState) {
@@ -77,7 +105,6 @@
Log.i("PublicViews" , "MessageDialog: onDismiss")
if(message.touchOutside){
message.setDismiss.invoke()
- message.onCancelRequest.invoke()
message.onDismissRequest.invoke()
}
}) {
@@ -108,11 +135,11 @@
if(!message.cancelText.equals("")){
Spacer(modifier = Modifier.weight(1f))
Button(onClick = {
- message.onCancelRequest.invoke()
if(message.cancelDissmiss){
message.setDismiss.invoke()
message.onDismissRequest.invoke()
}
+ message.onCancelRequest.invoke()
},
colors = ButtonDefaults.buttonColors(
containerColor = Color.Gray, // 背景色
@@ -124,11 +151,11 @@
}
Spacer(modifier = Modifier.weight(1f))
Button(onClick = {
- message.onConfirmRequest.invoke()
if(message.confirmDissmiss){
message.setDismiss.invoke()
message.onDismissRequest.invoke()
}
+ message.onConfirmRequest.invoke()
}) {
Text(text = message.confirmText)
}
--
Gitblit v1.9.1