Bongiovi
15/06/14, 16:50:22
Buenas, intento asignar desde Java dimensiones a 3 botones. Lo hago desde Java puesto que quiero que ocupen 1/3 de ventana cada uno. Tengo pensado hacer esto mismo para diseñar un TableLayout con múltiples celdas y subceldas (no conozco otra manera de hacerlo).
El código que sigo para asignar el ancho y el alto a los botones es el siguiente:
public class myActivity extends ActionBarActivity
{
( ... Declaración de variables ... )
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.ejercicios_activity);
context = this;
( ... asignación de layouts a los botones ... )
layout_view = findViewById(R.id.ejercicios_layout);
layout_view.getViewTreeObserver().addOnGlobalLayou tListener
(
new OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
// gets called after layout has been done but before display
// so we can get the height then hide the view
width_screen = layout_view.getWidth();
height_screen = layout_view.getHeight(); // Ahaha! Gotcha
layout_view.getViewTreeObserver().removeGlobalOnLa youtListener(this);
layout_view.setVisibility(View.GONE);
//Asignamos 1/3 del alto de la pantalla a cada botón
btn_binarios.getLayoutParams().height=height_scree n/3;
btn_binarios.getLayoutParams().width=width_screen;
btn_sales.getLayoutParams().height=height_screen/3;
btn_sales.getLayoutParams().width=width_screen;
btn_oxoacidos.getLayoutParams().height=height_scre en/3;
btn_oxoacidos.getLayoutParams().width=width_screen ;
Toast.makeText(context, width_screen+", "+height_screen, Toast.LENGTH_SHORT).show();
}
});
}
El caso es que el Toast muestra correctamente las dimensiones de la ventana, pero los botones no se dibujan. Me imagino que porque tienen dimensiones nulas.
¿Por qué no funciona?
Un saludo!
EDITO
He detectado el error, la línea que resalto en el código sobraba. Esto me pasa por hacer copy-paste de código de internet a ciegas...
El código que sigo para asignar el ancho y el alto a los botones es el siguiente:
public class myActivity extends ActionBarActivity
{
( ... Declaración de variables ... )
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.ejercicios_activity);
context = this;
( ... asignación de layouts a los botones ... )
layout_view = findViewById(R.id.ejercicios_layout);
layout_view.getViewTreeObserver().addOnGlobalLayou tListener
(
new OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
// gets called after layout has been done but before display
// so we can get the height then hide the view
width_screen = layout_view.getWidth();
height_screen = layout_view.getHeight(); // Ahaha! Gotcha
layout_view.getViewTreeObserver().removeGlobalOnLa youtListener(this);
layout_view.setVisibility(View.GONE);
//Asignamos 1/3 del alto de la pantalla a cada botón
btn_binarios.getLayoutParams().height=height_scree n/3;
btn_binarios.getLayoutParams().width=width_screen;
btn_sales.getLayoutParams().height=height_screen/3;
btn_sales.getLayoutParams().width=width_screen;
btn_oxoacidos.getLayoutParams().height=height_scre en/3;
btn_oxoacidos.getLayoutParams().width=width_screen ;
Toast.makeText(context, width_screen+", "+height_screen, Toast.LENGTH_SHORT).show();
}
});
}
El caso es que el Toast muestra correctamente las dimensiones de la ventana, pero los botones no se dibujan. Me imagino que porque tienen dimensiones nulas.
¿Por qué no funciona?
Un saludo!
EDITO
He detectado el error, la línea que resalto en el código sobraba. Esto me pasa por hacer copy-paste de código de internet a ciegas...