этот фрагмент кода выполняет бесконечную рекомпозицию при прокрутке , не могу понять почему?
Как управлять состоянием и анимацией в HorizontalPager в Jetpack Compose?
Я работаю с Jetpack Compose и пытаюсь создать собственный диалоговый пользовательский интерфейс, включающий HorizontalPager. Я использую ComposeView внутри MainActivity для отображения этого пользовательского интерфейса, но у меня возникают проблемы с управлением состоянием, анимацией и начальной настройкой страницы.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val compose = findViewById(R.id.composeErrorScreen)
compose.apply {
visibility = VISIBLE
setContent {
val dialogContentState by remember {
mutableStateOf(
CardsScreenUi(
2, // initialCard
listOf(2, 3, 4) // cardsList
)
)
}
Box(
modifier = Modifier
.fillMaxSize()
.background(Color.Transparent),
contentAlignment = Alignment.BottomEnd
) {
DialogContent(dialogContentState)
}
}
}
}
}
Здесь я добавляю компоновку с помощью JetPack Compose
internal data class CardsScreenUi(
val initialCard: Int,
val cardsList: List
)
@Composable
internal fun BoxScope.DialogContent(
dialogContentState: CardsScreenUi?,
) {
Log.d("[Testing]", "Starting ")
Column(
modifier = Modifier.align(Alignment.Center),
horizontalAlignment = Alignment.CenterHorizontally
) {
dialogContentState?.let { data ->
val (initialCard, cardsList) = data
val pagerState = rememberPagerState(
pageCount = {
cardsList.size
}
)
val screenWidth = LocalConfiguration.current.screenWidthDp.dp
val pageWidth = remember { 300.dp }
val sidePadding = remember { (screenWidth - pageWidth) / 2 }
HorizontalPager(
state = pagerState,
pageSpacing = 12.dp,
pageSize = PageSize.Fixed(pageWidth),
contentPadding = PaddingValues(horizontal = sidePadding)
) { page ->
// Page content can go here (e.g., display card content)
}
Spacer(modifier = Modifier.height(22.dp))
DotStepper(count = pagerState.pageCount, count2 = pagerState.currentPage)
}
}
}
@Composable
fun DotStepper(count: Int, count2: Int) {
Log.d("[Testing]", "Horizontal Pager $count and ${count2}")
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ager-state
Попал в бесконечную рекомпозицию из-за состояния пейджера горизонтального пейджера ⇐ Android
Форум для тех, кто программирует под Android
1731226116
Anonymous
[b]этот фрагмент кода выполняет бесконечную рекомпозицию[/b] [b]при прокрутке[/b] , не могу понять почему?
Как управлять состоянием и анимацией в HorizontalPager в Jetpack Compose?
Я работаю с Jetpack Compose и пытаюсь создать собственный диалоговый пользовательский интерфейс, включающий HorizontalPager. Я использую ComposeView внутри MainActivity для отображения этого пользовательского интерфейса, но у меня возникают проблемы с управлением состоянием, анимацией и начальной настройкой страницы.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val compose = findViewById(R.id.composeErrorScreen)
compose.apply {
visibility = VISIBLE
setContent {
val dialogContentState by remember {
mutableStateOf(
CardsScreenUi(
2, // initialCard
listOf(2, 3, 4) // cardsList
)
)
}
Box(
modifier = Modifier
.fillMaxSize()
.background(Color.Transparent),
contentAlignment = Alignment.BottomEnd
) {
DialogContent(dialogContentState)
}
}
}
}
}
[b]Здесь я добавляю компоновку с помощью JetPack Compose[/b]
internal data class CardsScreenUi(
val initialCard: Int,
val cardsList: List
)
@Composable
internal fun BoxScope.DialogContent(
dialogContentState: CardsScreenUi?,
) {
Log.d("[Testing]", "Starting ")
Column(
modifier = Modifier.align(Alignment.Center),
horizontalAlignment = Alignment.CenterHorizontally
) {
dialogContentState?.let { data ->
val (initialCard, cardsList) = data
val pagerState = rememberPagerState(
pageCount = {
cardsList.size
}
)
val screenWidth = LocalConfiguration.current.screenWidthDp.dp
val pageWidth = remember { 300.dp }
val sidePadding = remember { (screenWidth - pageWidth) / 2 }
HorizontalPager(
state = pagerState,
pageSpacing = 12.dp,
pageSize = PageSize.Fixed(pageWidth),
contentPadding = PaddingValues(horizontal = sidePadding)
) { page ->
// Page content can go here (e.g., display card content)
}
Spacer(modifier = Modifier.height(22.dp))
DotStepper(count = pagerState.pageCount, count2 = pagerState.currentPage)
}
}
}
@Composable
fun DotStepper(count: Int, count2: Int) {
Log.d("[Testing]", "Horizontal Pager $count and ${count2}")
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79174357/struck-in-infinite-recomposition-due-to-horizontal-pagers-pager-state[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия