programacion - manual de android en pdf
Cambio de posición del cuadro de diálogo en la pantalla de Android (7)
Encontré este fragmento de código del código @gypsicoder here
private CharSequence[] items = {"Set as Ringtone", "Set as Alarm"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if(item == 0) {
} else if(item == 1) {
} else if(item == 2) {
}
}
});
AlertDialog dialog = builder.create();
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();
wmlp.gravity = Gravity.TOP | Gravity.LEFT;
wmlp.x = 100; //x position
wmlp.y = 100; //y position
dialog.show();
Aquí el valor de la posición x es píxeles de izquierda a derecha. Para el valor de posición y es de abajo hacia arriba.
Hice un AlertDialog
simple en mi actividad :
View view = layoutInflater.inflate(R.layout.my_dialog, null);
AlertDialog infoDialog = new AlertDialog.Builder(MyActivity.this)
.setView(view)
.create();
infoDialog.show();
Con el código anterior, el cuadro de diálogo muestra en (aproximadamente) el centro de la pantalla.
Me pregunto, ¿cómo puedo personalizar la posición del diálogo para que se muestre justo debajo de la barra de acción superior? (¿Hay alguna forma de cambiar la gravedad o algo del diálogo?) Y ¿cómo hacerlo en función de mi código?
New BottomSheetDialog
:
BottomSheetDialog dialog = new BottomSheetDialog(YourActivity.this);
dialog.setContentView(YourView);
dialog.show();
Para mí, esto funcionó bastante bien cuando intentaba colocar mi cuadro de diálogo en algún lugar exactamente en la parte inferior de la vista de texto donde se selecciona.
public void setPosition(int yValue) {
Window window = getWindow();
WindowManager.LayoutParams param = window.getAttributes();
param.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
param.y = yValue;
window.setAttributes(param);
window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
}
Usé este código para mostrar el diálogo en la parte inferior de la pantalla:
Dialog dlg = <code to create custom dialog>;
Window window = dlg.getWindow();
WindowManager.LayoutParams wlp = window.getAttributes();
wlp.gravity = Gravity.BOTTOM;
wlp.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND;
window.setAttributes(wlp);
Este código también evita que Android atenúe el fondo del diálogo, si lo necesita. Debería poder cambiar el parámetro de gravedad para mover el diálogo sobre
solo agrega esto a tu código:
dialog.getWindow().setGravity(Gravity.BOTTOM);
dialog.getWindow().getAttributes().gravity = Gravity.BOTTOM;
private void showPictureialog() {
final Dialog dialog = new Dialog(this,
android.R.style.Theme_Translucent_NoTitleBar);
// Setting dialogview
Window window = dialog.getWindow();
window.setGravity(Gravity.CENTER);
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
dialog.setTitle(null);
dialog.setContentView(R.layout.selectpic_dialog);
dialog.setCancelable(true);
dialog.show();
}
puede personalizar su diálogo en función de la gravedad y los parámetros de diseño cambian la gravedad y el parámetro de diseño en función de su requerimiento