android 我的视角在喷气背包中相互重叠

yzxexxkh  于 2022-11-03  发布在  Android
关注(0)|答案(1)|浏览(169)

我是一个新的jetpack组成请帮助,我已经使用表面(),但我的意见是相互重叠,我想单独的意见,因为第一个应该是顶部标题(),另一个应该是账单
我的密码是:-

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApp {
                //TopHeader()
                MainContent()
            }
        }
    }
}

@Composable
fun MyApp(content: @Composable () -> Unit) {

    JetTipAppTheme {
        // A surface container using the 'background' color from the theme
        Surface(color = MaterialTheme.colors.background) {
            content()
        }

    }

}

TopHeader函数,用于在给定图像中显示粉红色视图

@Composable
fun TopHeader(totalPerPerson: Double = 134.0) {

    Surface(
        modifier = Modifier
            .fillMaxWidth()
            .padding(15.dp)
            .height(150.dp)
            .clip(shape = CircleShape.copy(all = CornerSize(12.dp))),
            //.clip(shape = RoundedCornerShape(corner = CornerSize(12.dp))),
        color = Color(0xFFE9D7F7)
    ) {

        Column(
            modifier = Modifier.padding(12.dp),
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center
        ) {

            val total = "%.2f".format(totalPerPerson)
            Text(
                text = "Total per person",
                style = MaterialTheme.typography.h5
            )
            Text(
                text = "$$total",
                style = MaterialTheme.typography.h4,
                fontWeight = FontWeight.ExtraBold
            )

        }

    }

}

这是主内容函数:-

@Composable
fun MainContent() {

    BillForm(){ billAmt ->
        Log.d("AMT","MainContent: $billAmt")

    }

}

BillForm可组合函数

@Composable
fun BillForm(modifier: Modifier = Modifier,
            onValChange: (String) -> Unit = {}
             ){

    val totalBillState = remember{
        mutableStateOf("")
    }

    val validState = remember(totalBillState.value) {

        totalBillState.value.trim().isNotEmpty()

    }

    val keyboardController = LocalSoftwareKeyboardController.current

    val sliderPositionState = remember {
        mutableStateOf(0f) //slider will take position from zero
    }

    TopHeader()

    Surface(
        modifier = Modifier
            .padding(2.dp)
            .fillMaxWidth(),
        shape = RoundedCornerShape(corner = CornerSize(8.dp)),
        border = BorderStroke(width = 1.dp, color = Color.LightGray)
    ) {
        Column(

            modifier = Modifier.padding(6.dp),
            verticalArrangement = Arrangement.Top,
            horizontalAlignment = Alignment.Start

        ) {
            InputField(
                valueState = totalBillState,
                labelId = "Enter Bill",
                enabled = true,
                isSingleLined = true,
                onAction = KeyboardActions{

                    if (!validState)return@KeyboardActions

                    onValChange(totalBillState.value.trim())

                    keyboardController?.hide()

                }
            )

            //if(validState){

                Row(
                    modifier = Modifier.padding(3.dp),
                    horizontalArrangement = Arrangement.Start

                ) {

                    Text(text = "Split",
                        modifier = Modifier.align(
                            alignment = Alignment.CenterVertically
                        ))

                    //Spacer in between text and buttons
                    Spacer(modifier = Modifier.width(120.dp))

                    //Row for Buttons
                    Row(modifier = Modifier.padding(horizontal = 3.dp),
                        horizontalArrangement = Arrangement.End
                        ) {

                        RoundIconButton( imageVector = Icons.Default.Remove,
                            onClick = {  })

                        Text(text = "2",
                            modifier = Modifier
                                .align(Alignment.CenterVertically)
                                .padding(start = 9.dp, end = 9.dp)
                            )

                        RoundIconButton( imageVector = Icons.Default.Add,
                            onClick = {  })

                    }

                }

            //Tip Row
            Row(modifier = Modifier
                .padding(horizontal = 3.dp, vertical = 12.dp)
            ) {
              Text(text = "Tip",
                  modifier = Modifier.align(alignment = Alignment.CenterVertically))

                Spacer(modifier = Modifier.width(200.dp))

                Text(text = "$33.00",
                modifier = Modifier.align(alignment = Alignment.CenterVertically))
            }

            Column(verticalArrangement = Arrangement.Center,
                    horizontalAlignment = Alignment.CenterHorizontally
                ) {

                Text(text = "33%")

                Spacer(modifier = Modifier.height(14.dp))

                //Slider
                Slider(value = sliderPositionState.value,
                    onValueChange = { newVal ->
                        sliderPositionState.value = newVal  //<- this will change the position of the slider
                        Log.d("Slider","BillForm: $newVal")
                    },
                        modifier = Modifier.padding(start = 16.dp, end = 16.dp),
                        steps = 5,
                        onValueChangeFinished = {

                        }
                    )

            }

//            }else{
//                Box() {
//
//                }
//            }

        }
    }
}

TopHeader可组合视图:-

账单表单视图:-

我想要的就像这张图片

7lrncoxx

7lrncoxx1#

为此,请使用Column(){}可组合函数。
您可以使用follow these basics来帮助您组织可组合对象并了解其工作原理。

相关问题