我正在写一个有两个文本字段和一个按钮的登录表单。当我点击其中一个文本字段时,键盘显示,内容不滚动以允许用户选择第二个字段+按登录按钮。
在XML领域,我尝试实现的是在清单中使用scrollview + adjustResize。
我试过在列中添加可滚动项、可滚动的scaffold以及其他一些了解成功的方法,但这些似乎是最常见的答案,所以我假设我在布局中做错了什么。
我的布局;
@Composable
fun LoginScreen() {
val scrollState = rememberScrollState()
Column(
modifier = Modifier
.fillMaxSize()
.imePadding()
.verticalScroll(scrollState)
) {
Column(
modifier = Modifier
.weight(0.5f)
.align(CenterHorizontally),
verticalArrangement = Center
) {
Image(
modifier = Modifier
.align(CenterHorizontally)
.size(120.dp),
painter = painterResource(R.mipmap.default_logo),
contentDescription = ""
)
Icon(
modifier = Modifier.width(200.dp),
painter = painterResource(com.roar.featureui.login.R.drawable.ic_title),
contentDescription = "",
tint = MaterialTheme.colorScheme.primary
)
}
LoginCardContent(
modifier = Modifier
.weight(0.5f)
.padding(horizontal = 32.dp),
username = "Daniel",
usernameChanged = {},
password = "Blah",
passwordChanged = {},
loading = false,
onLoginPressed = {}
)
}
}
还有我的载货单
<application
....>
<activity
android:name=".MainActivity"
android:exported="true"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
UI会调整大小,但我无法滚动查看所有内容。
编辑:在一个小设备上尝试了我的设计,底部的一些文本被剪掉了,UI也没有一起滚动,所以我不认为这与键盘有关,只是我的布局。
Edit 2:我简化了布局,从两个部分(logo/title)和登录内容中删除了weight
修饰符,允许UI滚动。
Edit 3:通过用约束布局替换父布局(列)修复了这个问题。虽然不确定列出了什么问题,但我觉得这应该可以用一个来实现。
1条答案
按热度按时间xienkqul1#
添加窗口软输入模式=“调整大小”
setContent添加后