android 编写-当键盘可见时,内容不可滚动

gblwokeq  于 2023-01-28  发布在  Android
关注(0)|答案(1)|浏览(154)

我正在写一个有两个文本字段和一个按钮的登录表单。当我点击其中一个文本字段时,键盘显示,内容不滚动以允许用户选择第二个字段+按登录按钮。
在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:通过用约束布局替换父布局(列)修复了这个问题。虽然不确定列出了什么问题,但我觉得这应该可以用一个来实现。

xienkqul

xienkqul1#

添加窗口软输入模式=“调整大小”

<activity
        android:windowSoftInputMode="adjustResize"
        android:name=".MainActivity"
        android:exported="true"
        android:label="@string/app_name">
</activity>

setContent添加后

ViewCompat.setOnApplyWindowInsetsListener(findViewById(android.R.id.content)){ view,insets ->
        val bottom = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom
        view.updatePadding(bottom = bottom)
        insets
    }

相关问题