redondo - estilos de botones android studio
Crear botones dinámicamente, ¿podría seleccionar uno y anular la selección de los otros botones? (2)
- La forma brutal (funciona si tienes pocos botones): guarda tus referencias de botones y crea un método privado que recorre tus botones y deselecciona una vez que no necesites
- Extienda su clase de botón y haga que escuche el evento personalizado que se genera cuando se hace clic en uno de los botones
- Mira la implementación de RadioGroup
- Variación de # 1. En lugar de crear oyentes por separado para sus botones, cree solo uno y reutilícelo para todos los botones. Extienda ese oyente desde OnClickListener y agregue el campo Lista. Cada vez que le asigna al oyente al botón, agregue el botón de referencia a esa lista. Ahora, cuando se activa
onClick
simplemente recorre la lista y desactiva los botones "otros"
Estoy creando botones dinámicamente ...
for(int i=0; i<colSize;i++){
final Button btn = new Button(this);
btn.setText(SectionName[i]);
btn.setTextSize(10);
btn.setPadding(8, 3,8, 3);
btn.setTextColor(Color.WHITE);
btn.setTypeface(Typeface.SERIF, Typeface.BOLD);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//***Every time that I click my button is selected !:)
btn.setSelected(true);
}
});
}
Pero ¿cómo podría anular la selección de los otros botones que fueron seleccionados, solo quiero un botón seleccionado! :)
Declare una variable para almacenar el Id del botón hecho clic ::
private int EnabledButton;
establecer una ID en cada botón cuando se crean ::
btn.setId(i);
o una etiqueta ::
btn.setTag(i);
luego en ese Oyente obtiene el "EnabledButton" y llama a una función para anular la selección de los otros botones ::
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EnabledButton=btn.getId();
DeselectButtons();
btn.setSelected(true);
}
});
La función para anular la selección de los otros botones ::
public void DeselectButtons() {
for(int i=0; i<NumberofButtons;i++){
if (EnabledButton!= i)
this.findViewById(i).setSelected(false);
}
}