En Android RadioGroup se usa para configurar los botones de radio. Si se selecciona un botón de opción dentro del grupo de radio, todos los demás se deseleccionan automáticamente.
En este artículo, discutiremos cómo crear programáticamente un RadioGroup en Kotlin.
Comencemos creando primero un proyecto en Android Studio. Para hacerlo, siga estas instrucciones:
- Haga clic en Archivo, luego en Nuevo y luego en Nuevo proyecto, y asigne el nombre que desee.
- Luego, seleccione Compatibilidad con el idioma Kotlin y haga clic en el botón siguiente.
- Seleccione SDK mínimo, lo que necesite
- Seleccione Actividad vacía y luego haga clic en finalizar .
Después de eso, tenemos que diseñar nuestro diseño. Para eso necesitamos trabajar con el archivo XML. Ve a app > res > layout y pega el siguiente código:
Modificar archivo activity_main.xml
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:gravity="center" android:id="@+id/layout" android:layout_height="match_parent" tools:context=".MainActivity"> </RelativeLayout>
MainActivity.kt
El siguiente paso es codificar nuestro RadioGroup. Abra app/src/main/java/yourPackageName/MainActivity.kt y pegue el siguiente código:
Java
package com.geeksforgeeks.myfirstKotlinapp import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.ViewGroup import android.widget.RadioButton import android.widget.RadioGroup import android.widget.RelativeLayout import android.widget.Toast class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val layout = findViewById<RelativeLayout>(R.id.layout) // Create RadioButton Dynamically val geek1 = RadioButton(this) //setting height and width geek1.layoutParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) geek1.setText(R.string.java) //setting text of first radio button geek1.id = 0 val geek2 = RadioButton(this) geek2.layoutParams = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) geek2.setText(R.string.python) ////setting text of second radio button geek2.id = 1 // Create RadioGroup Dynamically val radioGroup = RadioGroup(this) val params = RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) params.setMargins(40, 0, 0, 0) radioGroup.layoutParams = params //adding button to the radio group container radioGroup.addView(geek1) radioGroup.addView(geek2) layout.addView(radioGroup) radioGroup.setOnCheckedChangeListener { group, checkedId -> var text = getString(R.string.Chose) text += " " + getString(if (checkedId == 0) { R.string.java } else { R.string.python }) Toast.makeText(applicationContext, text, Toast.LENGTH_SHORT).show() } } }
El código anterior todavía producirá algunos errores porque hemos usado algunas strings que se han declarado en otro archivo, para resolver esto, agregue el siguiente fragmento de código a app/res/values/strings.xml
XML
<resources> <string name="app_name">My Application</string> <string name="java">Java</string> <string name="python">Python</string> <string name="Choose">You selected:</string> </resources>
AndroidManifest.xml
Java
<?xml version="1.0" encoding="utf-8"?> <manifest package="com.tutorialwing.dynamicradiogroup" xmlns:android="<a class="vglnk" href="http://schemas.android.com/apk/res/android" rel="nofollow"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>