Jetpack Compose — остановить изменение размера фона с помощью клавиатуры

Я добавил 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)
        }
    }
}   

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
76
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно установить фон для окна:

getWindow().setBackgroundDrawableResource(R.drawable.sign_in_sign_up_background)

Куда в моем @Composable ведет эта ссылка кода? Мой код изображения выше, если вы можете помочь уточнить.

Vaz 10.01.2023 13:59

Вызывается в Activity onCreate

Halifax 11.01.2023 02:06

Поэтому я удалил свой код Image() и добавил указанную выше строку в несколько разных мест моего OnCreate, но он не отображается при запуске симулятора. Я также добавил свой код OnCreate выше, если это поможет.

Vaz 11.01.2023 11:47

Поместите метод @Composable вашего другого родительского контейнера, чтобы удалить цвет фона

Halifax 11.01.2023 12:23

Я не уверен, что вы имеете в виду. Можете ли вы скопировать и вставить мой код выше в новый ответ и вставить туда, куда должна идти строка кода?

Vaz 11.01.2023 13:42
Ответ принят как подходящий

Поместите его в метод 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()
    }

}

Это не сработало для меня. Я скопировал и вставил весь этот код, и мой фон все еще изменяется, когда появляется клавиатура.

Vaz 12.01.2023 10:54

Конфигурация AndroidManifest.xml: android:windowSoftInputMode = "adjustResize"?

Halifax 13.01.2023 01:51

Да, это уже было в файле .xml до того, как я скопировал и вставил ваш код выше? Это решение сработало для вас?

Vaz 13.01.2023 13:10

Да, работает точно корректно, если вам удобно, можете скинуть свой код на гитхаб и прислать мне ссылку, могу помочь исправить

Halifax 14.01.2023 04:19

Итак, мне удалось заставить это работать сейчас, но как я могу добавить те же модификаторы изображения, которые были у меня в моем ImagecontentScale = ContentScale.Crop, alpha = 0.50F, modifier = Modifier .background(Color.White) .fillMaxSize()

Vaz 14.01.2023 12:29

Box(modifier = Modifier.fillMaxSize().background(Color.White.copy(alpha=0.5‌​F))) { SignInOrSignUpMasterView()}

Halifax 14.01.2023 13:36

Я сделал это сейчас спасибо. Теперь вопрос в том, что когда я ввожу новый вид и перехожу к нему, фон всегда присутствует. Я только хочу, чтобы фон был частью моего SignInOrSignUpMasterView(). Должен ли я опубликовать новый вопрос с моим кодом или ответить на свой вопрос и вставить туда новый код?

Vaz 16.01.2023 13:22

Если вы считаете мой ответ бесполезным, удалите его

Halifax 17.01.2023 02:05

Я создал новый вопрос здесь: stackoverflow.com/questions/75152716/…. Я добавлю эту ссылку в качестве ответа на этот вопрос, если на него ответят.

Vaz 17.01.2023 23:09

Я нашел это довольно забавным. Вы использовали ответ, который я вам дал, но вы сказали, что он не решен, и вы не разместили весь код, и не было эффекта видео или GIF. Вы позволите нам увидеть воздух?

Halifax 18.01.2023 02:48

@Vaz, пожалуйста, примите ответ, где вам помогли, прежде чем задавать новый вопрос

ryankuck 18.01.2023 04:04

Справедливые комментарии. Я принял этот ответ. Как я могу прикрепить видео к stackoverflow? Я не мог найти это онлайн.

Vaz 18.01.2023 12:16

Другие вопросы по теме

Jetpack Compose — как проверить, открыта ли клавиатура или закрыта
Как реализовать всплывающее окно предварительного просмотра клавиш на пользовательской клавиатуре Android
Наблюдение за видимостью программной клавиатуры, открытый/закрытый Jetpack Compose
Как отключить/предотвратить автоматическую прокрутку, когда ввод ориентирован на мобильные устройства с помощью всплывающего окна с цветовой панелью?
Как сделать так, чтобы содержимое джетпака не всплывало при открытии клавиатуры
RequestFocus() на EditText, отклонить BotSheetDialog без скрытия клавиатуры, и клавиатура странно отображается
Как запросить фокус редактирования текста на просмотре ресайклера?
Как скрыть программную клавиатуру в пользовательском диалоговом окне предупреждений?
Как скрыть клавиатуру. Системные службы недоступны для Activity до onCreate()
Как удалить специальные символы из КЛАВИАТУРЫ ANDROID без использования пользовательской клавиатуры?