2011-08-17 22 views

Respuesta

18

Utilice la propiedad layout_margin del elemento de botón. ¿Eso no funciona?

<Button android:layout_margin="5px" (...)/> 

Editar

Al crear un botón en Java, LayoutParams se utiliza para especificar los márgenes y así.

Button button = new Button(); 
(....) 
params = new LinearLayout.LayoutParams(); 
params.leftMargin = 5; 
(set params as you need) 
parent.addView(button, params); 

Los LayoutParams que utilice debe coincidir con el diseño que añadir el botón dentro (ver http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html). Para un LinearLayout, use un LinearLayout.LayoutParams y establezca los campos * Margen en consecuencia.

+0

Soy nuevo ¡Androide! Estoy confundido, si lo tengo en XML, entonces ¿cómo puedo usar mientras está creando dinámicamente? Mi código es así, btnSend = new Button (this); btnSend.setText ("Enviar ..."); btnSend.setBackgroundResource (R.drawable.red_button); btnSend.setOnClickListener (nueva View.OnClickListener() { \t \t \t \t \t \t public void onClick (Ver v) { \t \t \t \t // método generada automáticamente TODO código auxiliar \t \t \t \t \t \t \t \t // Código aquí ... \t \t \t \t \t \t \t} \t \t}); –

+0

Edito mi publicación con información sobre la creación dinámica de botones – njzk2

+2

Muchas gracias por su ayuda. Lo siento que ¡No hace lo que yo quiero! Say, LinearLayout.LayoutParams lParam = new LinearLayout.LayoutParams ( \t \t LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.RESUMIR CONTENIDO); lParam.setMargins (20, 20, 20, 20); Agrega margen a LinearLayout. No al botón. Por ejemplo, hay 2 botones, uno al lado del otro, no * * agrega espacio entre los botones. ¿Cuál es mi objetivo? Gracias! –

8

Prueba esto:

//Assuming your button is in a LinearLayout as stated 
LinearLayout.LayoutParams params = myButton.getLayoutParams(); 
params.setMargins(0, 0, 0, 0) //left, top, right, bottom 
myButton.setLayoutParams(params); 
+0

que también funciona, excepto que setLayoutParams es inútil. y getLayoutParams puede ser nulo. y ¿cómo sabes que es un LinearLayout.LayoutParams que tiene el botón? – njzk2

+2

No estoy escribiendo un programa para pasar las pruebas aquí, es una idea general de lo que se requiere. Como dije en el comentario, supongo que su botón está en LinearLayout, como dijo en su publicación original. En este enlace: http://developer.android.com/reference/android/view/View.html#getLayoutParams(), se afirma que 'Cuando una Vista se adjunta a un Grupo de Vista padre, este método no debe devolver nulo' . Ergo, no será nulo en este caso. – kcoppock

+0

@kcoppock, Gracias, creo que tiene razón en que no devolverá nulo, según su suposición de que está en LinearLayout. Pero, dado que el botón se agrega a ese diseño más tarde; en este caso, devuelve nulo. ¡Gracias a todos! –

3
MarginLayoutParams params = (MarginLayoutParams) vector8.getLayoutParams(); 
params.width = 200; params.leftMargin = 100; params.topMargin = 200; 
vector8.setLayoutParams(params); 

uso de la necesidad tipo de: MarginLayoutParams

+0

esto es útil para mí –

0

uso de este código para establecer el margen en tiempo de ejecución

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) btnContainer.getLayoutParams(); 
     params.setMargins(5, 50, 10, 0); //left, top, right, bottom 
     view_whwre_set_margin.setLayoutParams(params); 
Cuestiones relacionadas