Я пытаюсь внедрить пользовательскую закусочную в JetPack Compose. Я хочу, чтобы закусочная была фиксированная ширина (что -то вроде wroudContent), но стандартная закусочная Android всегда растягивается до полной ширины экрана. Или лучше реализовать мою собственную закусочную с нуля, используя коробку, карту или другую композицию? src = "https://i.sstatic.net/jybruykf.png"/>
Actual:
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.material3.Button
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Snackbar
import androidx.compose.material3.SnackbarDuration
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@Composable
fun LoadingSnackbarContent(message: String) {
Row(
modifier = Modifier
.padding(16.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(16.dp)
) {
CircularProgressIndicator(
modifier = Modifier.size(24.dp),
color = Color.White,
strokeWidth = 2.dp
)
Text(
text = message,
color = Color.White,
)
}
}
@Composable
fun LoadingSnackbarDemo() {
val snackbarHostState = remember { SnackbarHostState() }
val coroutineScope = rememberCoroutineScope()
var isLoading by remember { mutableStateOf(false) }
Scaffold(
snackbarHost = {
SnackbarHost(snackbarHostState) { data ->
Snackbar(
modifier = Modifier
.padding(horizontal = 16.dp)
.wrapContentWidth(align = Alignment.CenterHorizontally),
content = { LoadingSnackbarContent(message = "Loading...") }
)
}
},
content = { paddingValues ->
Column(
modifier = Modifier
.fillMaxSize()
.padding(paddingValues)
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Button(
onClick = {
if (!isLoading) {
isLoading = true
coroutineScope.launch {
snackbarHostState.showSnackbar(
message = "Verifying...",
duration = SnackbarDuration.Indefinite
)
delay(3000)
snackbarHostState.currentSnackbarData?.dismiss()
isLoading = false
}
}
},
enabled = !isLoading
) {
Text(if (isLoading) "Loading..." else "Start Verification")
}
}
}
)
}
@Preview
@Composable
private fun LoadingSnackbarContentPreview() {
LoadingSnackbarContent("Loading...")
}
@Preview(showBackground = true)
@Composable
fun PreviewLoadingSnackbarDemo() {
LoadingSnackbarDemo()
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... ck-compose
Закусочная с фиксированной шириной в JetPack Compose ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1754664505
Anonymous
Я пытаюсь внедрить пользовательскую закусочную в JetPack Compose. Я хочу, чтобы закусочная была фиксированная ширина (что -то вроде wroudContent), но стандартная закусочная Android всегда растягивается до полной ширины экрана. Или лучше реализовать мою собственную закусочную с нуля, используя коробку, карту или другую композицию? src = "https://i.sstatic.net/jybruykf.png"/>
Actual:
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.material3.Button
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Snackbar
import androidx.compose.material3.SnackbarDuration
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@Composable
fun LoadingSnackbarContent(message: String) {
Row(
modifier = Modifier
.padding(16.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(16.dp)
) {
CircularProgressIndicator(
modifier = Modifier.size(24.dp),
color = Color.White,
strokeWidth = 2.dp
)
Text(
text = message,
color = Color.White,
)
}
}
@Composable
fun LoadingSnackbarDemo() {
val snackbarHostState = remember { SnackbarHostState() }
val coroutineScope = rememberCoroutineScope()
var isLoading by remember { mutableStateOf(false) }
Scaffold(
snackbarHost = {
SnackbarHost(snackbarHostState) { data ->
Snackbar(
modifier = Modifier
.padding(horizontal = 16.dp)
.wrapContentWidth(align = Alignment.CenterHorizontally),
content = { LoadingSnackbarContent(message = "Loading...") }
)
}
},
content = { paddingValues ->
Column(
modifier = Modifier
.fillMaxSize()
.padding(paddingValues)
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Button(
onClick = {
if (!isLoading) {
isLoading = true
coroutineScope.launch {
snackbarHostState.showSnackbar(
message = "Verifying...",
duration = SnackbarDuration.Indefinite
)
delay(3000)
snackbarHostState.currentSnackbarData?.dismiss()
isLoading = false
}
}
},
enabled = !isLoading
) {
Text(if (isLoading) "Loading..." else "Start Verification")
}
}
}
)
}
@Preview
@Composable
private fun LoadingSnackbarContentPreview() {
LoadingSnackbarContent("Loading...")
}
@Preview(showBackground = true)
@Composable
fun PreviewLoadingSnackbarDemo() {
LoadingSnackbarDemo()
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79679168/snackbar-with-fixed-width-in-jetpack-compose[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия