Я добавил android:windowSoftInputMode = "adjustResize"
в свой файл AndroidManifest.xml, чтобы позволить текстовому полю, кнопке и тексту перемещаться вверх, но размер фона также изменяется. Как я могу предотвратить это?
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
//Used to determine where the starting launch point of the app is
val user by remember { mutableStateOf(Firebase.auth.currentUser) }
AppNavigation(
startDestination = if (user == null) {
ViewToDisplayKeys.SignInOrSignUp.toString()
} else {
ViewToDisplayKeys.OnboardingStart.toString()
}
)
}
}
}
@Composable
fun AppNavigation(
navController: NavHostController = rememberNavController(),
startDestination: String = "signInOrSignUp"
) {
NavHost(
navController = navController,
startDestination = startDestination
) {
composable("signInOrSignUp") {
SignInOrSignUpMasterView(navController = navController)
}
composable("onboarding") {
OnboardingStartView(navController)
}
}
}
Вам нужно установить фон для окна:
getWindow().setBackgroundDrawableResource(R.drawable.sign_in_sign_up_background)
Вызывается в Activity onCreate
Поэтому я удалил свой код Image()
и добавил указанную выше строку в несколько разных мест моего OnCreate, но он не отображается при запуске симулятора. Я также добавил свой код OnCreate выше, если это поможет.
Поместите метод @Composable вашего другого родительского контейнера, чтобы удалить цвет фона
Я не уверен, что вы имеете в виду. Можете ли вы скопировать и вставить мой код выше в новый ответ и вставить туда, куда должна идти строка кода?
Поместите его в метод onCreate, код выглядит следующим образом:
class SignInOrSignUp : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
getWindow().setBackgroundDrawableResource(R.drawable.sign_in_sign_up_background)
setContent {
AppTheme {
Box(modifier = Modifier.fillMaxSize()) {
SignInOrSignUpMasterView()
}
}
}
}
}
@Composable
fun SignInOrSignUpView() {
Box {
//Background image
/*Image(
painter = painterResource(id = R.drawable.sign_in_sign_up_background),
contentDescription = null,
contentScale = ContentScale.FillBounds,
alpha = 0.50F,
modifier = Modifier
.background(Color.White)
)*/
SignUpView()
}
}
Это не сработало для меня. Я скопировал и вставил весь этот код, и мой фон все еще изменяется, когда появляется клавиатура.
Конфигурация AndroidManifest.xml: android:windowSoftInputMode = "adjustResize"
?
Да, это уже было в файле .xml до того, как я скопировал и вставил ваш код выше? Это решение сработало для вас?
Да, работает точно корректно, если вам удобно, можете скинуть свой код на гитхаб и прислать мне ссылку, могу помочь исправить
Итак, мне удалось заставить это работать сейчас, но как я могу добавить те же модификаторы изображения, которые были у меня в моем Image
contentScale = ContentScale.Crop, alpha = 0.50F, modifier = Modifier .background(Color.White) .fillMaxSize()
Box(modifier = Modifier.fillMaxSize().background(Color.White.copy(alpha=0.5F))) { SignInOrSignUpMasterView()}
Я сделал это сейчас спасибо. Теперь вопрос в том, что когда я ввожу новый вид и перехожу к нему, фон всегда присутствует. Я только хочу, чтобы фон был частью моего SignInOrSignUpMasterView()
. Должен ли я опубликовать новый вопрос с моим кодом или ответить на свой вопрос и вставить туда новый код?
Если вы считаете мой ответ бесполезным, удалите его
Я создал новый вопрос здесь: stackoverflow.com/questions/75152716/…. Я добавлю эту ссылку в качестве ответа на этот вопрос, если на него ответят.
Я нашел это довольно забавным. Вы использовали ответ, который я вам дал, но вы сказали, что он не решен, и вы не разместили весь код, и не было эффекта видео или GIF. Вы позволите нам увидеть воздух?
@Vaz, пожалуйста, примите ответ, где вам помогли, прежде чем задавать новый вопрос
Справедливые комментарии. Я принял этот ответ. Как я могу прикрепить видео к stackoverflow? Я не мог найти это онлайн.
Куда в моем
@Composable
ведет эта ссылка кода? Мой код изображения выше, если вы можете помочь уточнить.