2010-07-12 23 views
7

Tengo un botón en mi aplicación. Quiero cambiar su posición programáticamente. He creado un botón en XML de la siguiente manera:Android Button Position Programmatically

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

<Button android:text="@+id/Button01" 
     android:id="@+id/Button01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="50px" 
     android:layout_marginTop="10px" 
     > 
</Button> 
</LinearLayout> 

Supongamos que quiero para fijar la posición del botón como 100px de izquierda (como layout_marginLeft = "100px"). ¿Cómo puedo hacerlo programáticamente? Por favor ayudame a resolver el problema.

+0

Déjame ir al grano ... En realidad Mi Disposición contiene 9 botones ... por lo que algunos botones son visibles e invisibles en base a la condition..so quiero alinear (mover hacia la izquierda o hacia la derecha) programáticamente ... por favor me ayuda –

+0

Eche un vistazo a esta respuesta. Muestra claramente cómo establecer los márgenes en un botón. http://stackoverflow.com/a/4594374/525541 – MindWire

Respuesta

3

relleno y el margen no son lo mismo ... este es el hilo es lo que busca Set margins in a LinearLayout programmatically

+0

este enlace es de gran ayuda para mí ... pero mi diseño contiene 9 botones ... por lo que algunos son visibles e invisibles en función de la condición ... así que quiero alinear (mover hacia la izquierda o hacia la derecha) programáticamente ... pls help me –

+1

¿Has notado que, salvo visible, invisible allí también es una opción oculta para ver la visibilidad http://developer.android.com/reference/android/view/View.html#GONE. Depende de lo que planeas hacer, pero una solución limpia será solo alinear tus botones en xml y cuando no los necesita para configurar la visibilidad. Si esto no ayuda, proporcione más información para que podamos ayudarlo. –

+0

tenía el mismo problema. intentó View.INVISIBLE y es perfecto. gracias @MojoRisin – j2me

6

Necesita obtener la vista y transformarla en un objeto Java, luego llame al setPadding.

algo como esto iba a salir

Button myBtn; 
myBtn = (Button) findViewById(R.id.Button01); 
myBtn.setPadding(0,100,0,0); 

Leer más aquí: https://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html

+0

no funciona ... mostrando la línea roja (error) en la función setMargins. Estoy usando Android 1.5 –

+0

Pruebe setPadding. – Pentium10

+0

también probé btnTest.setPadding (100,0,0,0); pero hace que el botón de 100 ancho y texto se aplique en el lado derecho. Pero todavía no funciona –

2

No puede usar setMargin() con btn, úselo con LayoutParams y luego btn.setLayoutParams(params);

7

Lucas, utilice el

RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

rel_btn.leftMargin = myXPosition; 
rel_btn.topMargin = myYPosition; 
rel_btn.width = buttonW; 
rel_btn.height = buttonH; 

myButton.setLayoutParams(rel_btn);