如何将 OnClick 添加到 Jetpack Compose 中的 LazyColumn 文本?
How do I add an OnClick to a LazyColumn text in Jetpack Compose?
我刚刚制作了一个 LazyColumn 并放置了文本,但是我想为这些文本添加一个 OnClick 属性,这样当单击列表中的每个文本时它会调用一个不同的 phone 数字。例如:我想如果我按下它说“第一”的地方,应用程序会调用一个 phone 号码(我在代码中输入的号码,我不希望它调用我必须输入的号码使用应用程序),如果我按它说“第二”的地方,应用程序会呼叫另一个 phone 号码。我正在使用 Jetpack Compose,你能帮帮我吗?这是我到目前为止所做的:
@Composable
fun Hacerllamada(){
val intent = Intent (Intent.ACTION_CALL)
intent.data = Uri.parse("tel: ")
}
@Preview
@Composable
fun Columna() {
LazyColumn(
modifier = Modifier
.fillMaxSize()
.background(Color.Gray)
) {
item{
Text(
text = "primero",
fontSize = 32.sp,
color = Color.White,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center)
Text(text = "segundo",
fontSize = 32.sp,
color = Color.White,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center)
Text(text = "tercero",
fontSize = 32.sp,
color = Color.White,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center)}
}
}
你的Hacerllamada()
不应该是@Composable
,只是一个普通的方法。然后,您可以将 clickable
添加到 Text 可组合项的修饰符中。像这样
fun makeACall(context: Context, phoneNumber: String) {
val intent = Intent(Intent.ACTION_CALL)
intent.data = Uri.parse("tel: $phoneNumber")
//make sure you have permission to make a call
startActivity(context, intent, bundleOf())
}
@Composable
fun Columna() {
LazyColumn(
modifier = Modifier
.fillMaxSize()
.background(Color.Gray)
) {
item {
PhoneNumber(title = "primero", phoneNumber = "11111")
PhoneNumber(title = "segundo", phoneNumber = "22222")
PhoneNumber(title = "tercero", phoneNumber = "33333")
}
}
}
@Composable
fun PhoneNumber(title: String, phoneNumber: String) {
val context = LocalContext.current
Text(
text = title,
fontSize = 32.sp,
color = Color.White,
modifier = Modifier
.fillMaxWidth()
.clickable { makeACall(context = context, phoneNumber = phoneNumber) },
textAlign = TextAlign.Center
)
}`enter code here`
我刚刚制作了一个 LazyColumn 并放置了文本,但是我想为这些文本添加一个 OnClick 属性,这样当单击列表中的每个文本时它会调用一个不同的 phone 数字。例如:我想如果我按下它说“第一”的地方,应用程序会调用一个 phone 号码(我在代码中输入的号码,我不希望它调用我必须输入的号码使用应用程序),如果我按它说“第二”的地方,应用程序会呼叫另一个 phone 号码。我正在使用 Jetpack Compose,你能帮帮我吗?这是我到目前为止所做的:
@Composable
fun Hacerllamada(){
val intent = Intent (Intent.ACTION_CALL)
intent.data = Uri.parse("tel: ")
}
@Preview
@Composable
fun Columna() {
LazyColumn(
modifier = Modifier
.fillMaxSize()
.background(Color.Gray)
) {
item{
Text(
text = "primero",
fontSize = 32.sp,
color = Color.White,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center)
Text(text = "segundo",
fontSize = 32.sp,
color = Color.White,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center)
Text(text = "tercero",
fontSize = 32.sp,
color = Color.White,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center)}
}
}
你的Hacerllamada()
不应该是@Composable
,只是一个普通的方法。然后,您可以将 clickable
添加到 Text 可组合项的修饰符中。像这样
fun makeACall(context: Context, phoneNumber: String) {
val intent = Intent(Intent.ACTION_CALL)
intent.data = Uri.parse("tel: $phoneNumber")
//make sure you have permission to make a call
startActivity(context, intent, bundleOf())
}
@Composable
fun Columna() {
LazyColumn(
modifier = Modifier
.fillMaxSize()
.background(Color.Gray)
) {
item {
PhoneNumber(title = "primero", phoneNumber = "11111")
PhoneNumber(title = "segundo", phoneNumber = "22222")
PhoneNumber(title = "tercero", phoneNumber = "33333")
}
}
}
@Composable
fun PhoneNumber(title: String, phoneNumber: String) {
val context = LocalContext.current
Text(
text = title,
fontSize = 32.sp,
color = Color.White,
modifier = Modifier
.fillMaxWidth()
.clickable { makeACall(context = context, phoneNumber = phoneNumber) },
textAlign = TextAlign.Center
)
}`enter code here`