responsive keypad

This commit is contained in:
moon 2026-05-31 22:04:09 +06:30
parent 40ee7c600f
commit c1c208187b
2 changed files with 15 additions and 48 deletions

View File

@ -6,50 +6,15 @@ import androidx.compose.animation.core.tween
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.BarChart
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.ChevronRight
import androidx.compose.material.icons.filled.Dashboard
import androidx.compose.material.icons.filled.Menu
import androidx.compose.material.icons.filled.Sync
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.ModalDrawerSheet
import androidx.compose.material3.ModalNavigationDrawer
import androidx.compose.material3.NavigationDrawerItem
import androidx.compose.material3.NavigationDrawerItemDefaults
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.VerticalDivider
import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
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.material.icons.filled.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip

View File

@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
@ -67,7 +68,7 @@ fun InputAmount(
Box(
modifier = Modifier
.fillMaxSize()
.weight(1f),
.weight(2f),
){
Card(
modifier = Modifier.align(Alignment.CenterEnd)
@ -93,7 +94,7 @@ fun InputAmount(
Text(
text = "Enter Amount",
color = Color.Gray,
fontSize = 11.sp,
fontSize = 18.sp,
modifier = Modifier.align(Alignment.CenterHorizontally)
)
Spacer(modifier = Modifier.height(8.dp))
@ -106,7 +107,7 @@ fun InputAmount(
Text(
text = prefixLabel,
color = Color.LegacyRed,
fontSize = 13.sp,
fontSize = 16.sp,
fontWeight = FontWeight.Medium,
modifier = Modifier.padding(end = 10.dp, bottom = 6.dp)
)
@ -120,12 +121,12 @@ fun InputAmount(
)
}
Spacer(modifier = Modifier.height(12.dp))
Spacer(modifier = Modifier.height(14.dp))
Text(
text = supportingText,
color = Color.Gray,
fontSize = 11.sp,
fontSize = 14.sp,
modifier = Modifier.align(Alignment.CenterHorizontally)
)
}
@ -139,6 +140,7 @@ fun InputAmount(
verticalArrangement = Arrangement.Bottom
){
NumericKeypad(
modifier = Modifier.fillMaxSize(),
onKeyClick = { value ->
amount = appendAmountValue(amount, value)
}
@ -202,6 +204,7 @@ fun InputAmount(
@Composable
private fun NumericKeypad(
modifier: Modifier = Modifier,
onKeyClick: (String) -> Unit
) {
val keys : List<List<String>> = listOf(
@ -211,18 +214,18 @@ private fun NumericKeypad(
listOf(".", "0", "00")
)
Column(
modifier = Modifier.fillMaxWidth(),
modifier = modifier,
verticalArrangement = Arrangement.spacedBy(6.dp)
) {
keys.forEach { row ->
Row(
modifier = Modifier.fillMaxWidth(),
modifier = Modifier.fillMaxWidth().weight(1f),
horizontalArrangement = Arrangement.spacedBy(6.dp)
) {
row.forEach { key ->
KeypadButton(
text = key,
modifier = Modifier.weight(1f),
modifier = Modifier.weight(1f).fillMaxHeight(),
onClick = { onKeyClick(key) }
)
}
@ -241,7 +244,6 @@ private fun KeypadButton(
Box(
modifier = modifier
.height(66.dp)
.shadow(
elevation = 2.dp,
shape = RoundedCornerShape(8.dp),