Add click selection on the number picker.
This commit is contained in:
parent
81f71a9aec
commit
5e7be483e2
3 changed files with 12 additions and 3 deletions
|
|
@ -3,6 +3,7 @@ package com.pixelized.rplexicon.ui.composable
|
|||
import android.content.res.Configuration.UI_MODE_NIGHT_NO
|
||||
import android.content.res.Configuration.UI_MODE_NIGHT_YES
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.height
|
||||
|
|
@ -15,15 +16,16 @@ import androidx.compose.material3.MaterialTheme
|
|||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.DpSize
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.util.lerp
|
||||
import com.pixelized.rplexicon.ui.theme.LexiconTheme
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlin.math.absoluteValue
|
||||
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
|
|
@ -35,6 +37,7 @@ fun NumberPicker(
|
|||
from: Int = 0,
|
||||
pager: PagerState,
|
||||
) {
|
||||
val scope = rememberCoroutineScope()
|
||||
VerticalPager(
|
||||
modifier = Modifier
|
||||
.height(height = itemSize * itemAmount)
|
||||
|
|
@ -44,7 +47,9 @@ fun NumberPicker(
|
|||
pageSize = PageSize.Fixed(itemSize),
|
||||
) { index ->
|
||||
Box(
|
||||
modifier = Modifier.size(size = itemSize),
|
||||
modifier = Modifier
|
||||
.clickable { scope.launch { pager.animateScrollToPage(page = index) } }
|
||||
.size(size = itemSize),
|
||||
contentAlignment = Alignment.Center,
|
||||
) {
|
||||
Text(
|
||||
|
|
@ -76,7 +81,7 @@ private fun NumberPickerPreview() {
|
|||
LexiconTheme {
|
||||
Surface {
|
||||
NumberPicker(
|
||||
pager = rememberPagerState(initialPage = 20) { 99 }
|
||||
pager = rememberPagerState(initialPage = 20) { 99 },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import androidx.compose.runtime.Composable
|
|||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
|
|
@ -44,6 +45,7 @@ fun HandleCounterEditDialog(
|
|||
onConfirm: (String, Int) -> Unit,
|
||||
) {
|
||||
dialog.value?.let {
|
||||
val scope = rememberCoroutineScope()
|
||||
val pager = rememberPagerState(initialPage = it.value) { it.max + 1 }
|
||||
Dialog(
|
||||
properties = remember { DialogProperties(usePlatformDefaultWidth = false) },
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import androidx.compose.runtime.Stable
|
|||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
|
|
@ -51,6 +52,7 @@ fun HandleHitPointEditDialog(
|
|||
onConfirm: (hp: Int, extra: Int) -> Unit,
|
||||
) {
|
||||
dialog.value?.let {
|
||||
val scope = rememberCoroutineScope()
|
||||
val hpPager = rememberPagerState(initialPage = it.value) { it.max + 1 }
|
||||
val extraPager = rememberPagerState(initialPage = it.extra) { 99 }
|
||||
Dialog(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue