从上节继续,我们完善一些小内容,例如添加一个输入框,输入骰子值,显示对应的礼物文字,点击确定后更新骰子图片。其实后续建议大家先不看我的代码,先自己尝试能不能实现功能,因为都是之前学过的内容啦,就是如何变得美观一点。在上节内容列布局中加一行布局用于控件显示,位置如下:
// 管理输入框的状态(必加,否则输入框无法输入内容)
var inputnum by remember { mutableStateOf("") }
Row( verticalAlignment = Alignment.CenterVertically, // Row内所有组件垂直居中
modifier = Modifier // 关键:用独立的Modifier,不复用Column的modifier
.height(50.dp)
.fillMaxWidth()
.padding(horizontal = 10.dp)) {// 左右留边,避免贴屏幕
// 文字:Row中默认水平靠左(不用加align),垂直居中(继承Row的verticalAlignment)
Text(text = "骰子值:")
// 间距:文字和输入框之间留10dp空白
Spacer(modifier= Modifier.width(10.dp))
OutlinedTextField(
value = inputnum,
onValueChange = {inputnum=it},// 绑定输入状态
modifier=Modifier
.weight(1f),// 核心:占满Row剩余宽度,不挤按钮
singleLine = true, // 强制单行输入,避免换行
keyboardOptions = KeyboardOptions (keyboardType = KeyboardType.Number),// 只允许输入数字
placeholder = {Text("请输入1-6的数字!")}// 提示文字,更友好
)
Spacer(modifier= Modifier.width(10.dp))
Button(onClick = {
var dicValue=inputnum.toIntOrNull()?:1;
if(dicValue in 1..6){ // 输入合法,执行更新骰子点数
result=dicValue
}
},modifier= Modifier
.height(40.dp)) {
Text("确定")
}
}
Spacer(modifier= Modifier.height(20.dp))
Text(GetGiveFromNum(inputnum.toIntOrNull()?:1))
Spacer(modifier= Modifier.height(40.dp))
因为我的例子中有关备注比较详细,就不再一步步详细描述了,大家可以自己一起打字写写,增加熟悉度。