2012-06-08 21 views
11

Tengo un grupo de radio en xml, y los botones se generan mediante programación. ¿Cómo agrego espacio entre los botones programáticamente?android agregar relleno entre los botones del grupo de radio programáticamente

Pensé que era algo así como LayoutParams pero mi objeto no viene con un método obvio setPadding o setMargins.

Esto es lo que estaba tratando

RadioButton currentButton = new RadioButton(context); 
      currentButton.setText(item.getLabel()); 
      currentButton.setTextColor(Color.BLACK); 

      //add padding between buttons 
      LayoutParams params = new LayoutParams(context, null); 
      params. ... ?????? 
      currentButton.setLayoutParams(params); 

Respuesta

19

Relleno

normales LayoutParams no tienen métodos para aplicar el relleno, pero puntos de vista. Desde un RadioButton es una subclase de vista, se puede utilizar View.setPadding(), por ejemplo como este:

currentButton.setPadding(0, 10, 0, 10); 

Esto añade relleno de 10px en la parte superior y en la parte inferior de 10px. Si desea utilizar otras unidades además de px (por ejemplo, dp), puede usar TypedValue.applyDimension() para convertirlas a píxeles primero.

márgenes

Los márgenes se aplican a algunas clases específicas que LayoutParams subclase MarginLayoutParams. Asegúrese de usar una subclase específica al establecer un margen, p. RadioGroup.LayoutParams en lugar del genérico ViewGroup.LayoutParams (cuando el diseño principal es RadioGroup). Entonces simplemente puede usar MarginLayoutParams.setMargins().

muestra:

RadioGroup.LayoutParams params 
      = new RadioGroup.LayoutParams(context, null); 
params.setMargins(10, 0, 10, 0); 
currentButton.setLayoutParams(params); 
+4

Hola. Probé el código de márgenes anterior y no funciona. Los botones son simples al lado de otro. – Taras

+0

Creo que el valor de relleno predeterminado es de aproximadamente 10, por lo que cuando proporciones 10 padding no lo notarás, prueba con un valor mayor como 40 y lo verás funcionar. –

Cuestiones relacionadas