|
||
|
![]() |
![]() |
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 ;)
__________________
|
![]() |
![]() |
||||||
|