📌  相关文章
📜  Android中使用Jetpack Compose的RadioButtons

📅  最后修改于: 2021-05-13 16:41:05             🧑  作者: Mango

单选按钮用于仅从列表中的几个选项列表中选择一个特定选项,或者选择一个。在许多地方,单选按钮用于从两个或多个选项列表中仅选择一个选项。在本文中,我们将介绍使用Jetpack Compose在Android中实现此单选按钮的方法。

单选按钮的属性

Attribute Descriptions
selected this attribute is used to make a radio button selected. 
onClick this is used when our radio button is clicked. 
modifier to add padding to our radio buttons. 

分步实施

步骤1:创建一个新项目

要在Android Studio Canary版本中创建新项目,请参阅如何使用Jetpack Compose在Android Studio Canary版本中创建新项目。

步骤2:使用MainActivity.kt文件

导航到应用程序> Java >您的应用程序的程序包名称,然后打开MainActivity.kt文件。在该文件内,添加以下代码。在代码内部添加了注释,以更详细地了解代码。

Kotlin
import android.graphics.drawable.shapes.Shape
import android.media.Image
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.*
import androidx.compose.foundation.Text
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.selection.selectable
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.*
import androidx.compose.material.Icon
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccountCircle
import androidx.compose.material.icons.filled.Info
import androidx.compose.material.icons.filled.Menu
import androidx.compose.material.icons.filled.Phone
import androidx.compose.runtime.*
import androidx.compose.runtime.savedinstancestate.savedInstanceState
import androidx.compose.ui.Alignment
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.setContent
import androidx.compose.ui.res.imageResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.example.gfgapp.ui.GFGAppTheme
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.platform.ContextAmbient
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.semantics.SemanticsProperties.ToggleableState
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.input.*
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.TextUnit
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Column {
                // in below line we are calling
                  // a radio button  method.
                SimpleRadioButtonComponent()
            }
        }
    }
}
  
@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    GFGAppTheme {
        SimpleRadioButtonComponent();
    }
}
  
@Composable
fun SimpleRadioButtonComponent() {
    val radioOptions = listOf("DSA", "Java", "C++")
    val (selectedOption, onOptionSelected) = remember { mutableStateOf(radioOptions[2]) }
    Column(
        // we are using column to align our  
          // imageview to center of the screen.
        modifier = Modifier.fillMaxWidth().fillMaxHeight(),
          
          // below line is used for 
          // specifying vertical arrangement.
        verticalArrangement = Arrangement.Center,
          
          // below line is used for 
          // specifying horizontal arrangement.
        horizontalAlignment = Alignment.CenterHorizontally,
        ) {
        // we are displaying all our
          // radio buttons in column.
        Column {
            // below line is use to set data to
            // each radio button in colums.
            radioOptions.forEach { text ->
                Row(
                    Modifier
                        // using modifier to add max  
                      // width to our radio button.
                        .fillMaxWidth()
                        // below mthod is use to add 
                      // selectable to our radio button.
                        .selectable(
                            // this method is called when 
                            // radio button is selected.
                            selected = (text == selectedOption),
                            // below mthod is called on 
                            // clicking of radio button.
                            onClick = { onOptionSelected(text) }
                        )
                         // below line is use to add
                       // padding to radio button.
                        .padding(horizontal = 16.dp)
                ) {
                    // below line is use to get context.
                    val context = ContextAmbient.current
                    
                    // below line is use to 
                    // generate radio button
                    RadioButton(
                        // inside this method we are 
                          // adding selected with a option.
                        selected = (text == selectedOption),modifier = Modifier.padding(all = Dp(value = 8F)),
                        onClick = {
                            // inide on click mthod we are setting a 
                            // selected option of our radio buttos.
                            onOptionSelected(text)
                              
                            // after clicking a radio button  
                            // we are displaying a toast message.
                            Toast.makeText(context, text, Toast.LENGTH_LONG).show()
                        }
                    )
                    // below line is use to add 
                    // text to our radio buttons.
                    Text(
                        text = text,
                        modifier = Modifier.padding(start = 16.dp)
                    )
                }
            }
        }
    }
}


现在运行您的应用程序,并查看该应用程序的输出。

输出:

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!