08-19-2012, 12:18 PM
Es un poco engorroso hacer controles por código, pero bueno, no veo otro remedio.
Consigues el layout de fondo de la vista con un findViewById, imagínate que tu vista tiene de fondo un LinearLayout con nombre backgroundLayout, pues lo pillas con un:
LinearLayout bg = (LinearLayout)findViewById(R.id.backgroundLayout);
en el onCreate de la Activity.
Luego te creas los botones como si tal cosa, y los añades a la vista. Del estilo:
Button button = new Button(this);
// Aqui haces cosas con tu boton, como ponerle un LayoutParms adecuado, ponerle margenes, ponerle el texto, etc
button .setText(R.string.button_back);
button .setLayoutParams(new ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
button.setOnClickListener(buttonClickListener);
bg.addView(button);
La información de cuando le hagas click le pasará al listener que te definas en la activity para ese botón, el que prefieras. Por ejemplo:
OnClickListener buttonClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// Pones las acciones aqui
}
}
Para saber qué botón es el que llama, tienes la vista v (una clase padre de Button), simplemente te puedes pasar objetos con setTag y recuperarlos con getTag, o cualquier otro método que te parezca.
He de decir que poner los botones en una posición fija en Android nunca es buena idea, todo tiene que ser relativo. Si por cojones necesitas valores fijos de píxeles, tienes que multiplicar la posición deseada por la densidad de píxeles. La calculas con este snippet:
DisplayMetrics dm = getResources().getDisplayMetrics();
int densityDpi = dm.densityDpi;
Bueno, te he puesto todo esto de memoria, igual hay algún typo y tal.
Saludos.
Consigues el layout de fondo de la vista con un findViewById, imagínate que tu vista tiene de fondo un LinearLayout con nombre backgroundLayout, pues lo pillas con un:
LinearLayout bg = (LinearLayout)findViewById(R.id.backgroundLayout);
en el onCreate de la Activity.
Luego te creas los botones como si tal cosa, y los añades a la vista. Del estilo:
Button button = new Button(this);
// Aqui haces cosas con tu boton, como ponerle un LayoutParms adecuado, ponerle margenes, ponerle el texto, etc
button .setText(R.string.button_back);
button .setLayoutParams(new ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
button.setOnClickListener(buttonClickListener);
bg.addView(button);
La información de cuando le hagas click le pasará al listener que te definas en la activity para ese botón, el que prefieras. Por ejemplo:
OnClickListener buttonClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// Pones las acciones aqui
}
}
Para saber qué botón es el que llama, tienes la vista v (una clase padre de Button), simplemente te puedes pasar objetos con setTag y recuperarlos con getTag, o cualquier otro método que te parezca.
He de decir que poner los botones en una posición fija en Android nunca es buena idea, todo tiene que ser relativo. Si por cojones necesitas valores fijos de píxeles, tienes que multiplicar la posición deseada por la densidad de píxeles. La calculas con este snippet:
DisplayMetrics dm = getResources().getDisplayMetrics();
int densityDpi = dm.densityDpi;
Bueno, te he puesto todo esto de memoria, igual hay algún typo y tal.
Saludos.
You receive loot: [Una vida]