¿Cómo agregar el botón de radio dinámicamente según el número dado de cuentas?
He intentado este código. Exhibirá tres botones de radio en una sola fila cuando el emulador comienza. Pero necesito un evento de botón para esto. es decir; Si hago clic en el botón, debe pedir número de botones de radio. Entonces Si doy el recuento, debe mostrar los botones de radio basados en el recuento dado. Por ejemplo, si doy el recuento como 3, debe mostrar los tres botones de radio en una sola fila. Tu ayuda es altamente apreciada. Gracias por adelantado.
public class MyActivity extends Activity { /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); for(int row=0; row < 1; row++) { LinearLayout ll = new LinearLayout(this); ll.setOrientation(LinearLayout.HORIZONTAL); for(int i = 1; i < 4; i++) { RadioButton rdbtn = new RadioButton(this); rdbtn.setId((row * 2) + i); rdbtn.setText("Radio " + rdbtn.getId()); ll.addView(rdbtn); } ((ViewGroup)findViewById(R.id.radiogroup)).addView(ll); } } }
Esto es xml
- Inflando RadioGroup en múltiples controles de radio de Android a la vez
- Cómo hacer RadioGroup botones de radio con imágenes en Android ... ¿Cómo?
- Android - Botón de radio - el botón dibujable no se muestra en Lollipop
- Android AlertDialog no muestra botones de radio o mensaje
- Preparación del tipo de grupo de radio personalizado
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <RadioGroup android:id="@+id/radiogroup" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true"/> </RelativeLayout>
- Los botones de radio de Android en un listview personalizado cambian su estado cuando desplazamos la lista
- RadioButton no dibujar fondo correctamente
- Botones de radio específicos: la forma más sencilla de configurar diferentes estilos para los botones primero / último
- android onCheckedChanged para el radiogrupo
- Cómo igualar espacio hacia fuera radiobuttons en Android?
- Radiogrupo Android, divisor entre los botones de radio
- RadioGroup con radiobuttons dentro de una distribución androide relativa
- Android RadioGroup / RadioButtons dinámicos como botones planos
A continuación, encontrará el código, he creado un 'EditText' y un 'botón' en el diseño xml. Introduzca un número en el 'EditText' y haga clic en el botón, el mismo no. De los botones de radio se agregarán en el Layout.
Este es tu ActivityMain
public class ActivityMain extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText editText=(EditText)findViewById(R.id.et_no); findViewById(R.id.btn).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub int number=Integer.parseInt(editText.getText().toString()); addRadioButtons(number); } }); } public void addRadioButtons(int number) { for (int row = 0; row < 1; row++) { RadioGroup ll = new RadioGroup(this); ll.setOrientation(LinearLayout.HORIZONTAL); for (int i = 1; i <= number; i++) { RadioButton rdbtn = new RadioButton(this); rdbtn.setId((row * 2) + i); rdbtn.setText("Radio " + rdbtn.getId()); ll.addView(rdbtn); } ((ViewGroup) findViewById(R.id.radiogroup)).addView(ll); } } }
Y aquí está su archivo de diseño
<RadioGroup android:id="@+id/radiogroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:orientation="vertical" /> <LinearLayout android:layout_marginTop="20dp" android:layout_marginLeft="20dp" android:layout_height="wrap_content" android:layout_width="match_parent"> <EditText android:layout_height="wrap_content" android:layout_width="wrap_content" android:hint="Enter no." android:inputType="number" android:id="@+id/et_no"/> <Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Add Radio btn" android:id="@+id/btn"/> </LinearLayout>
Pruebe algo como a continuación:
RadioGroup rgp= (RadioGroup) findViewById(R.id.radiogroup); RadioGroup.LayoutParams rprms; for(int i=0;i<3;i++){ RadioButton radioButton = new RadioButton(this); radioButton.setText("new"+i); radioButton.setId("rbtn"+i); rprms= new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); rgp.addView(radioButton, rprms); }
Esta es la manera de hacer esto:
RadioGroup rgp = (RadioGroup) findViewById(R.id.radio_group); int buttons = 5; for (int i = 1; i <= buttons ; i++) { RadioButton rbn = new RadioButton(this); rbn.setId(i + 1000); rbn.setText("RadioButton" + i); rgp.addView(rbn); }
Pero lo que si necesita hacer esto horizontalmente, sólo tiene que añadir la orientación (el valor predeterminado es vertical) con el método setOrientation()
:
RadioGroup rgp = (RadioGroup) findViewById(R.id.radio_group); rgp.setOrientation(LinearLayout.HORIZONTAL); int buttons = 5; for (int i = 1; i <= buttons; i++) { RadioButton rbn = new RadioButton(this); rbn.setId(1 + 1000); rbn.setText("RadioButton" + i); rbn.setLayoutParams(params); rgp.addView(rbn); }
Este es el código completo:
En primer lugar definiendo dentro de nuestro Layout el RadioGroup:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <RadioGroup android:id="@+id/radio_group" android:layout_width="match_parent" android:layout_height="wrap_content"/> </RelativeLayout>
El código en el MainActivity:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Defining 5 buttons. int buttons = 5; AppCompatRadioButton[] rb = new AppCompatRadioButton[buttons]; RadioGroup rgp = (RadioGroup) findViewById(R.id.radio_group); rgp.setOrientation(LinearLayout.HORIZONTAL); for (int i = 1; i <= buttons; i++) { RadioButton rbn = new RadioButton(this); rbn.setId(i + 1000); rbn.setText("RadioButton" + i); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1f); rbn.setLayoutParams(params); rgp.addView(rbn); } } }
Añadir un Button
y EditText
en xml y tomar la entrada de editText a variable inputValue
y probar esto,
public class MyActivity extends Activity { /** * Called when the activity is first created. */ LinearLayout ll=null; ViewGroup vwgroup; Button btnClick; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); vwgroup=((ViewGroup)findViewById(R.id.radiogroup) btnClick=(Button)findViewById(R.id.button1); btnClick.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if(ll!=null) viewgroup.removeView(ll); ll = new LinearLayout(this); for(int i = 1; i < inputValue; i++) { RadioButton rdbtn = new RadioButton(this); rdbtn.setId((row * 2) + i); rdbtn.setText("Radio " + rdbtn.getId()); ll.addView(rdbtn); } vwgroup.addView(ll); } }); } }