簡體   English   中英

鍵盤打開時如何避免 Jetpack Compose 內容上升

[英]how to avoid jetpack compose content going up when keyboard opens

項目清單應該留在他們的位置

如上所示,當用戶打開鍵盤時,項目列表、文本輸入字段和添加按鈕 go 向上,我希望項目列表保留在 position 而文本輸入字段和添加按鈕 go 向上.

代碼:

活動:

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        OlegarioLopezTheme {
            Surface(
                modifier = Modifier.fillMaxSize(),
                color = MaterialTheme.colors.background
            ) { Navigation() }
        }
    }
}

Navigation() 函數只是調用 Composable

可組合:

    @Composable
fun ListScreen(
    viewModel: MainScreenViewModel,
    navController: NavController
) {
    LazyColumn{...}
MainTextField(viewModel)
    AddButton(viewModel)
}

確保活動的windowSoftInputMode設置為adjustResize

<activity
      android:name=".MyActivity"
      android:windowSoftInputMode="adjustResize">
</activity>

通過這種方式,活動的主要 window 始終會調整大小以為屏幕上的軟鍵盤騰出空間。

然后只需使用布局作為:

Column() {
    LazyColumn(Modifier.weight(1f)) {
      //..
    }
    Row(){
        TextField()
        Button()
    }
}

這正是我的問題,有一個額外的扭曲,它只是在活動從暫停返回后才成為一個問題。

全新的 state 沒有問題,但突然恢復時,我的整個主要活動都被鍵盤推高了。 超級奇怪的行為。

我實際上將 windowSoftInputMode 設置為“adjustPan”,它現在按預期工作,這就是它作為一項新活動的工作方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM