by Guest » 07 Jan 2025, 14:07
Die Auffüllung androidx.compose.material3.Scaffold fügt fälschlicherweise die Auffüllung der Navigationsleiste hinzu, auch wenn die Softtastatur geöffnet ist. Die IME-Auffüllung wird hinzugefügt, was zu einer doppelten Menge an Auffüllung der Navigationsleiste führt (siehe Abbildung unten, die Trennlinie). sollte die Oberseite der Soft-Tastatur berühren).
Ich versuche, Folgendes zusammenzuarbeiten:
- App ist Kante an Kante
- ist „adjustResize“
- mit meinem Inhalt in einem androidx.compose.material3.Scaffold
Dies ist der Code der MainActivity:
Code: Select all
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent {
MyComposeApplicationTheme {
Scaffold(
topBar = {
TopAppBar(
title = { Text(text = stringResource(id = R.string.app_name)) }
)
},
) { scaffoldPadding ->
Box(
modifier = Modifier
.fillMaxSize()
.padding(scaffoldPadding),
contentAlignment = Alignment.BottomCenter
) {
OutlinedTextField(
value = "",
onValueChange = {},
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp)
)
Divider()
}
}
}
}
}
}
Und so sieht es aus:

Aber wenn ich die Tastatur öffne, ändert sich die Größe des Bildschirms nicht korrekt, obwohl das Attribut android:windowSoftInputMode="adjustResize" im AndroidManifest festgelegt ist für die Aktivität:
Wenn ich den Modifier.imePadding( verwende ), die Situation verbessert sich, aber jetzt habe ich neben der Polsterung für den IME auch die innere Polsterung des Gerüsts, die die Polsterung für die Navigationsleiste berücksichtigt, auch wenn die Tastatur geöffnet ist:
Was ist der richtige Weg, um die untere Polsterung des Gerüsts beizubehalten, ohne die Polsterung der Navigationsleiste hinzuzufügen? wenn die IME-Auffüllung hinzugefügt wird?
BEARBEITEN
Ich vermute, dass dies ein Fehler im Scaffold ist, also habe ich ein Problem auf dem Tracker erstellt :
https://issuetracker.google.com/issues/249727298
Die Auffüllung androidx.compose.material3.Scaffold fügt fälschlicherweise die Auffüllung der Navigationsleiste hinzu, auch wenn die Softtastatur geöffnet ist. Die IME-Auffüllung wird hinzugefügt, was zu einer doppelten Menge an Auffüllung der Navigationsleiste führt (siehe Abbildung unten, die Trennlinie). sollte die Oberseite der Soft-Tastatur berühren).
Ich versuche, Folgendes zusammenzuarbeiten:
[list]
[*]App ist Kante an Kante
[*][code]windowSoftInputMode[/code] ist „adjustResize“
[*]mit meinem Inhalt in einem androidx.compose.material3.Scaffold
[/list]Dies ist der Code der MainActivity:
[code]class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
setContent {
MyComposeApplicationTheme {
Scaffold(
topBar = {
TopAppBar(
title = { Text(text = stringResource(id = R.string.app_name)) }
)
},
) { scaffoldPadding ->
Box(
modifier = Modifier
.fillMaxSize()
.padding(scaffoldPadding),
contentAlignment = Alignment.BottomCenter
) {
OutlinedTextField(
value = "",
onValueChange = {},
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 16.dp)
)
Divider()
}
}
}
}
}
}
[/code]
Und so sieht es aus:
[img]https://i.sstatic.net/RMs9D.png[/img]
Aber wenn ich die Tastatur öffne, ändert sich die Größe des Bildschirms nicht korrekt, obwohl das Attribut android:windowSoftInputMode="adjustResize" im AndroidManifest festgelegt ist für die Aktivität:
[img]https://i.sstatic.net/X7PUO.png[/img]
Wenn ich den Modifier.imePadding( verwende ), die Situation verbessert sich, aber jetzt habe ich neben der Polsterung für den IME auch die innere Polsterung des Gerüsts, die die Polsterung für die Navigationsleiste berücksichtigt, auch wenn die Tastatur geöffnet ist:
[img]https://i.sstatic.net/dy0nN.png[/img]
Was ist der richtige Weg, um die untere Polsterung des Gerüsts beizubehalten, ohne die Polsterung der Navigationsleiste hinzuzufügen? wenn die IME-Auffüllung hinzugefügt wird?
BEARBEITEN
Ich vermute, dass dies ein Fehler im Scaffold ist, also habe ich ein Problem auf dem Tracker erstellt : https://issuetracker.google.com/issues/249727298