google / accompanist

A collection of extension libraries for Jetpack Compose
https://google.github.io/accompanist
Apache License 2.0
7.43k stars 598 forks source link

problem with PagerState #1605

Closed tihhan closed 1 year ago

tihhan commented 1 year ago

package com.example.pager

import android.annotation.SuppressLint import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.material.Scaffold import androidx.compose.material.Tab import androidx.compose.material.TabRowDefaults import androidx.compose.material.Text import androidx.compose.material.TopAppBar import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface import androidx.compose.material.TabRow import androidx.compose.runtime.Composable import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.pagerTabIndicatorOffset import com.google.accompanist.pager.rememberPagerState import kotlinx.coroutines.launch import androidx.compose.foundation.pager.PagerState

class MyMainActivity: ComponentActivity(){ @SuppressLint("UnusedMaterialScaffoldPaddingParameter") @OptIn(ExperimentalPagerApi::class, ExperimentalFoundationApi::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)

    setContent {
        MaterialTheme {
            Surface(
                modifier = Modifier.fillMaxWidth(),
                color = MaterialTheme.colors.background
            ) {
                Scaffold(topBar = {
                    TopAppBar(title = {
                        Text("Pager Tabs")
                    })
                }) {
                    val scope = rememberCoroutineScope()
                    val pagerState = rememberPagerState()
                    val pages = listOf(
                        "Pending",
                        "Done",
                        "All"
                    )
                    Column(
                        modifier = Modifier.fillMaxWidth()
                    ) {
                        TabRow(
                            selectedTabIndex = pagerState.currentPage,
                            modifier = Modifier.fillMaxWidth(),
                            indicator = { tabPositions ->
                                TabRowDefaults.Indicator(
                                    Modifier.pagerTabIndicatorOffset(
                                        pagerState,
                                        tabPositions
                                    )
                                )
                            }
                        ) {
                            pages.forEachIndexed { index, title ->
                                Tab(
                                    text = { Text(title) },
                                    selected = pagerState.currentPage == index,
                                    onClick = {
                                        scope.launch {
                                            pagerState.animateScrollToPage(index)
                                        }
                                    }
                                )
                            }
                        }

                        HorizontalPager(
                            pageCount = pages.size,
                            modifier = Modifier.fillMaxWidth(),
                            state = pagerState
                        ) { page ->
                            when (page) {
                                0 -> PendingTasks()
                                1 -> DoneTasks()
                                2 -> AllTasks()
                            }
                        }
                    }
                }
            }
        }
    }
}

}

@Composable private fun AllTasks() { Text("All Tasks") }

@Composable private fun DoneTasks() { Text("Completed Tasks") }

@Composable private fun PendingTasks() { Text("Pending Tasks") } code doesnt work, i dont know what i should do

bentrengrove commented 1 year ago

Hello, we can't provide technical support here unfortunately. I would recommend trying to take your question to Stack Overflow. Sorry I can't be of more help.