我有一个作曲活动,上面有一个应用程序栏,屏幕底部有大约TextFields个.当我将焦点放在TextFields个中的一个上时,键盘被调用,我希望文本字段出现在键盘上方,这样我就可以看到我正在键入的内容.这很好用,但整个屏幕内容被向上推,使顶部的应用程序栏消失或在顶部被切断.

我认为理想的情况是,顶端的应用程序栏应该固定在顶端,只有下面的内容才会移动.无论顶部的应用程序栏是脚手架的一部分,还是位于脚手架上方的Column:

    Scaffold(
        topBar = {
            TopAppBar("...")
        }
    ) {
        // scrollable contents with TextFields
    }

---> OR

    Column {
        TopAppBar("...")
        Scaffold {
            // scrollable contents with TextFields
        }
    }

这是不受欢迎的行为所说明的:

enter image description here

有没有办法实现我想要的固定顶端应用程序栏的行为?在Compose中,顶端的应用程序栏是否应该默认向上推?

推荐答案

看起来你必须为你的一个可合成元素指定一个权重.

从这post个答案中得到一些参考.假设你已经在舱单上设定了adjustResize

android:windowSoftInputMode="adjustResize"/>

你可以认为这是一个粗略的解决方案.

Scaffold(
    topBar = {
        TopAppBar(title = { Text("Hello World")})
    }
) {
    Column(
        modifier = Modifier
            .fillMaxSize()
            .padding(it)
    ) {

        Box(
            modifier = Modifier
                .weight(1f)
                .background(Color.Gray)
                .fillMaxWidth()
        )

        Box(
            modifier = Modifier
                .fillMaxWidth()
                .wrapContentHeight()
                .background(Color(0xFF6f4d8c)),
            contentAlignment = Alignment.Center
        ) {
            TextField(
                value = "User Name",
                onValueChange = {}
            )
        }

        Box(
            modifier = Modifier
                .fillMaxWidth()
                .wrapContentHeight()
                .background(Color(0xFF6286bd)),
            contentAlignment = Alignment.Center
        ) {
            TextField(
                value = "Password",
                onValueChange = {}
            )
        }
    }
}

enter image description here

我只是添加了一些 colored颜色 来显示小部件如何占据其父列中的空间.

Android相关问答推荐

list 合并失败,AGP 8.3.0

Android事件:APP_SCOUT_HANG警告SQLite

如何在Android Studio中将我的Java-库&库设置为Kotlin库

Android 11:在try 获取文件的永久权限后,仍然没有读写权限

在Jetpack Compose中,我可以配置动画以恒定的速度而不是恒定的时间运行吗?

使用lazyColumn迁移paging3的旧代码

块不起作用,出现 "只有安全的 (?.)... " 错误

如何在Android Studio中禁用文件中的Github用户名引用?

如何在每次显示可组合项时执行代码(并且只执行一次)

[Android][Room] 将密封类存储到 Room 数据库中

Android Studio 复制类 kotlin

为什么我的应用程序使用这些信息?

MediumTopAppBar Material3 只更改大标题

ionic - capacitor - Android 风味 - 无法在模拟器或真实设备中运行应用程序

缺少类 com.google.android.datatransport.runtime.ForcedSender

如何在行/列/卡片 compose 中添加左边框

Kotlin:如何在另一个变量的名称中插入一个变量的值

Jetpack 组合和片段

将生成的 AAR 与 Composables 一起使用时未解决的参考

Xamarin 获取动态 ListView DataTemplate 中的按钮单击事件数据