Estoy tratando de usar Java (no XML) para crear un LinearLayout con botones que llenan la pantalla y tienen márgenes. Aquí está el código que funciona sin márgenes:Establecer márgenes en LinearLayout programmatically
LinearLayout buttonsView = new LinearLayout(this);
buttonsView.setOrientation(LinearLayout.VERTICAL);
for (int r = 0; r < 6; ++r) {
Button btn = new Button(this);
btn.setText("A");
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); // Verbose!
lp.weight = 1.0f; // This is critical. Doesn't work without it.
buttonsView.addView(btn, lp);
}
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
setContentView(buttonsView, lp);
Para que funciona bien, pero ¿cómo diablos le da a los márgenes de botones por lo que hay espacio entre ellos? Intenté usar LinearLayout.MarginLayoutParams
, pero eso no tiene miembro weight
, así que no sirve. Y tampoco funciona si lo pasa lp
en su constructor.
¿Esto es imposible? Porque parece que sí, y no sería la primera tarea de diseño de Android que solo puedes hacer en XML.
http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html#setMargins(int, int, int, int) En lugar de layoutParams.setMargins (30, 20, 30, 0); usted pone layoutParams.setMargins (30dp, 20dp, 30dp, 0dp); – DarthestVader
setMargins toma int como argumentos .. solo puede proporcionar "dp" usando xml atributos – jyavenard