В настоящее время я изучаю Jetpack Compose и Material3 и пытаюсь реализовать экран смены пароля в виде всплывающего окна, занимающего только половину экрана. Несмотря на мои усилия скруглить верхний левый и правый углы, цвет фона по-прежнему остается белым.
введите описание изображения здесь
Потратив целый день безуспешно пытаюсь решить эту проблему, прошу вашего совета. В Android по умолчанию установлен белый цвет фона, если он не указан?
@OptIn(ExperimentalMaterialApi::class)
fun NavGraphBuilder.changePasswordComposable(
navController: NavHostController,
userViewModel: UserViewModel,
) {
composable(
route = Screens.CHANGE_PASSWORD_SCREEN,
) {
var user by remember { mutableStateOf(User()) }
LaunchedEffect(Unit) {
user = userViewModel.getLoggedInUser()
}
val bottomSheetState =
rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden)
val coroutineScope = rememberCoroutineScope()
ModalBottomSheetLayout(
sheetState = bottomSheetState,
sheetContent = {
ChangePasswordScreen(
onBackClicked = {
coroutineScope.launch {
bottomSheetState.hide()
}
}, onChangePasswordClicked = { newPassword, oldPassword ->
// Handle password change logic
}
)
},
sheetBackgroundColor = Color.Transparent, // Transparent Background
sheetShape = RoundedCornerShape(
topStart = 16.dp, topEnd = 16.dp
),// circle shape
) {
//
Box(modifier = Modifier.fillMaxSize()) {
//
LaunchedEffect(Unit) {
coroutineScope.launch {
bottomSheetState.show()
}
}
}
}
}
}
@Composable
fun ChangePasswordScreen(
onBackClicked: () -> Unit,
onChangePasswordClicked: (String, String) -> Unit
) {
val focusManager = LocalFocusManager.current
var newPassword by remember { mutableStateOf("") }
var oldPassword by remember { mutableStateOf("") }
var showNewPasswordError by remember { mutableStateOf(false) }
var showOldPasswordError by remember { mutableStateOf(false) }
Column(
modifier = Modifier
.background(
backgroundColor,
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)
)
.clip(RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)) //
.fillMaxWidth()
.padding(16.dp)
.verticalScroll(rememberScrollState())
) {
UserInfoField(
focusManager = focusManager,
label = stringResource(id = R.string.new_password),
value = newPassword,
placeholder = stringResource(id = R.string.enter_new_password),
isPassword = true,
onValueChange = {
newPassword = it
showNewPasswordError = it.length < 8
},
showPasswordError = showNewPasswordError,
errorMessage = if (showNewPasswordError) stringResource(
id = R.string.password_too_short
) else ""
)
Spacer(modifier = Modifier.height(16.dp))
UserInfoField(
focusManager = focusManager,
label = stringResource(id = R.string.old_password),
value = oldPassword,
placeholder = stringResource(id = R.string.enter_old_password),
isPassword = true,
onValueChange = {
oldPassword = it
showOldPasswordError = it.length < 8
},
showPasswordError = showOldPasswordError,
errorMessage = if (showOldPasswordError) stringResource(
id = R.string.password_too_short
) else ""
)
Spacer(modifier = Modifier.height(24.dp))
DebounceClickable(
onClick = {
onChangePasswordClicked(newPassword, oldPassword)
}
) {
Button(
onClick = { /* */ },
enabled = newPassword.isNotEmpty() && oldPassword.isNotEmpty() && !showNewPasswordError && !showOldPasswordError,
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = SMALL_PADDING),
colors = androidx.compose.material3.ButtonDefaults.buttonColors(
containerColor = selectedCr
)
) {
Text(
text = stringResource(id = R.string.change_password),
color = Color.White,
fontSize = MEDIUM_FONT_SIZE,
fontWeight = androidx.compose.ui.text.font.FontWeight.Bold
)
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... pose-white
Цвет фона по умолчанию в Jetpack Compose белый? ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1716619370
Anonymous
В настоящее время я изучаю Jetpack Compose и Material3 и пытаюсь реализовать экран смены пароля в виде всплывающего окна, занимающего только половину экрана. Несмотря на мои усилия скруглить верхний левый и правый углы, цвет фона по-прежнему остается белым.
введите описание изображения здесь
Потратив целый день безуспешно пытаюсь решить эту проблему, прошу вашего совета. В Android по умолчанию установлен белый цвет фона, если он не указан?
@OptIn(ExperimentalMaterialApi::class)
fun NavGraphBuilder.changePasswordComposable(
navController: NavHostController,
userViewModel: UserViewModel,
) {
composable(
route = Screens.CHANGE_PASSWORD_SCREEN,
) {
var user by remember { mutableStateOf(User()) }
LaunchedEffect(Unit) {
user = userViewModel.getLoggedInUser()
}
val bottomSheetState =
rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden)
val coroutineScope = rememberCoroutineScope()
ModalBottomSheetLayout(
sheetState = bottomSheetState,
sheetContent = {
ChangePasswordScreen(
onBackClicked = {
coroutineScope.launch {
bottomSheetState.hide()
}
}, onChangePasswordClicked = { newPassword, oldPassword ->
// Handle password change logic
}
)
},
sheetBackgroundColor = Color.Transparent, // Transparent Background
sheetShape = RoundedCornerShape(
topStart = 16.dp, topEnd = 16.dp
),// circle shape
) {
//
Box(modifier = Modifier.fillMaxSize()) {
//
LaunchedEffect(Unit) {
coroutineScope.launch {
bottomSheetState.show()
}
}
}
}
}
}
@Composable
fun ChangePasswordScreen(
onBackClicked: () -> Unit,
onChangePasswordClicked: (String, String) -> Unit
) {
val focusManager = LocalFocusManager.current
var newPassword by remember { mutableStateOf("") }
var oldPassword by remember { mutableStateOf("") }
var showNewPasswordError by remember { mutableStateOf(false) }
var showOldPasswordError by remember { mutableStateOf(false) }
Column(
modifier = Modifier
.background(
backgroundColor,
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)
)
.clip(RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp)) //
.fillMaxWidth()
.padding(16.dp)
.verticalScroll(rememberScrollState())
) {
UserInfoField(
focusManager = focusManager,
label = stringResource(id = R.string.new_password),
value = newPassword,
placeholder = stringResource(id = R.string.enter_new_password),
isPassword = true,
onValueChange = {
newPassword = it
showNewPasswordError = it.length < 8
},
showPasswordError = showNewPasswordError,
errorMessage = if (showNewPasswordError) stringResource(
id = R.string.password_too_short
) else ""
)
Spacer(modifier = Modifier.height(16.dp))
UserInfoField(
focusManager = focusManager,
label = stringResource(id = R.string.old_password),
value = oldPassword,
placeholder = stringResource(id = R.string.enter_old_password),
isPassword = true,
onValueChange = {
oldPassword = it
showOldPasswordError = it.length < 8
},
showPasswordError = showOldPasswordError,
errorMessage = if (showOldPasswordError) stringResource(
id = R.string.password_too_short
) else ""
)
Spacer(modifier = Modifier.height(24.dp))
DebounceClickable(
onClick = {
onChangePasswordClicked(newPassword, oldPassword)
}
) {
Button(
onClick = { /* */ },
enabled = newPassword.isNotEmpty() && oldPassword.isNotEmpty() && !showNewPasswordError && !showOldPasswordError,
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = SMALL_PADDING),
colors = androidx.compose.material3.ButtonDefaults.buttonColors(
containerColor = selectedCr
)
) {
Text(
text = stringResource(id = R.string.change_password),
color = Color.White,
fontSize = MEDIUM_FONT_SIZE,
fontWeight = androidx.compose.ui.text.font.FontWeight.Bold
)
}
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78531558/is-the-default-background-color-in-jetpack-compose-white[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия