|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Problema al asignar dimensiones a botones en Java
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: Código:
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().addOnGlobalLayoutListener
(
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().removeGlobalOnLayoutListener(this);
layout_view.setVisibility(View.GONE);
//Asignamos 1/3 del alto de la pantalla a cada botón
btn_binarios.getLayoutParams().height=height_screen/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_screen/3;
btn_oxoacidos.getLayoutParams().width=width_screen;
Toast.makeText(context, width_screen+", "+height_screen, Toast.LENGTH_SHORT).show();
}
});
}
¿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...
__________________
Última edición por Bongiovi Día 19/06/14 a las 20:04:11. |
|
|
|
#2
|
||||
|
||||
|
Para que 3 botones ocupen 1/3 de pantalla cada uno no hace falta hacerlo por código, de hecho hacerlo por código es una marranada, porque si luego quieres introducir un nuevo control tienes que volver a modificar el código y hacer nuevos cálculos.
Tienes que crear un LinearLayout, en este caso Vertical porque los botones se sitúan verticalmente, y dentro pones los 3 botones con Width Match_Parent y Height 0dp, y además les añades a los 3 botones un Weight = 1 Con eso tendrás el mismo efecto, y si luego quieres añadir un 4º, un 5º o un 6º botón sólo tienes que añadirlo a tu LinearLayout y ponerlo también con Height 0dp y Weight = 1. |
|
#3
|
||||
|
||||
|
Para que 3 botones ocupen 1/3 de pantalla cada uno no hace falta hacerlo por código, de hecho hacerlo por código es una marranada, porque si luego quieres introducir un nuevo control tienes que volver a modificar el código y hacer nuevos cálculos.
Tienes que crear un LinearLayout, en este caso Vertical porque los botones se sitúan verticalmente, y dentro pones los 3 botones con Width Match_Parent y Height 0dp, y además les añades a los 3 botones un Weight = 1 Con eso tendrás el mismo efecto, y si luego quieres añadir un 4º, un 5º o un 6º botón sólo tienes que añadirlo a tu LinearLayout y ponerlo también con Height 0dp y Weight = 1. ![]() Gracias y un saludo ;)
__________________
|
![]() |
Estás aquí
|
||||||
|
||||||