Мне удалось это сделать, но для окна. Нарисуйте надлежащий фон за windownsets.type.navigationbars () или windowsinsets.type.tappableElement () вместо.
Я не понимаю, что они предлагают. Эти две функции возвращают navigation_bars = 2 и tappable_element = 64, не очень поучительны. Я уже готов рискнуть за панелью навигации.
Как мне нарисовать за панель навигации неопределенным образом? изображение). < /p>
< /li>
Мне очень не нравится проверка ориентации и дублирование кода, но вместо этого я не знаю, что делать. Дублирование кода происходит из -за различных вставков, и если я вычисляю модификатор как модификатор = if (условие) модификатор. Это модификатор этого (). (Если деятельность была перезапущена, это не приведет к проблемам, но оно не перезагружается, ожидается, что оно обрабатывает самостоятельные изменения.) Примечание Android: configchanges , это связано с WebView в реальном коде.
Код: Выделить всё
package com.stackoverflow.drawbehindnavigationbar4
import android.content.res.Configuration.ORIENTATION_PORTRAIT
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.material3.OutlinedTextFieldDefaults
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalView
import com.stackoverflow.drawbehindnavigationbar4.ui.theme.ApplicationTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
val defaultNavigationBarColor = window.navigationBarColor // !!! Deprecated
setContent {
setNavigationBarColor(R.color.transparent_navigation_bar, defaultNavigationBarColor)
ApplicationTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> // !!! not used
val orientation = LocalConfiguration.current.orientation
if (orientation == ORIENTATION_PORTRAIT) {
Greeting(
name = "Whatever",
modifier = Modifier.statusBarsPadding()
)
} else {
Greeting(
name = "Whatever",
modifier = Modifier.navigationBarsPadding().statusBarsPadding()
)
}
}
}
}
}
@Composable
private fun setNavigationBarColor(
customNavigationBarColorArgb: Int,
defaultNavigationBarColor: Int
) {
val configuration = LocalConfiguration.current
val view = LocalView.current
LaunchedEffect(configuration.toString(), view.isInEditMode) {
val orientation = configuration.orientation
if (orientation == ORIENTATION_PORTRAIT && !view.isInEditMode) {
window.navigationBarColor = customNavigationBarColorArgb // !!! Deprecated
} else {
window.navigationBarColor = defaultNavigationBarColor // !!! Deprecated
}
}
}
}
@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Column(
modifier = modifier.background(Color.Red).fillMaxWidth()
) {
Text(
text = "Top of $name!",
)
var text by remember { mutableStateOf("foo") }
TextField(
value = text,
onValueChange = { text = it },
colors = OutlinedTextFieldDefaults.colors( unfocusedContainerColor = Color.Yellow )
)
Spacer(Modifier.weight(1.0f))
Text(
text = "Bottom of $name!",
)
}
}
Код: Выделить всё
+++ b/app/src/main/AndroidManifest.xml
+ android:windowSoftInputMode="adjustResize"
+ android:configChanges="screenLayout|orientation|screenSize|keyboard|keyboardHidden|smallestScreenSize|uiMode"
+++ b/app/src/main/res/values/colors.xml
+ #20000000
Подробнее здесь: https://stackoverflow.com/questions/796 ... deprecated
Мобильная версия