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