studio programacion herramientas fundamentos con avanzado aplicaciones android android-layout android-intent android-emulator android-widget

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