studio programacion para herramientas fundamentos desarrollo con avanzado aplicaciones android android-widget

programacion - manual android studio avanzado



¿Cómo controlar el ancho y alto del diálogo de alerta predeterminado en Android? (6)

AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Title"); builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); } }); AlertDialog alert = builder.create();

Estoy usando el código anterior para mostrar un Diálogo de alerta. Por defecto, llena la pantalla en ancho y wrap_content en alto.
¿Cómo puedo controlar el ancho y la altura del diálogo de alerta predeterminado?
Lo intenté:

alert.getWindow().setLayout(100,100); // It didn''t work.

¿Cómo obtener los parámetros de diseño en la ventana de alerta y configurar manualmente el ancho y alto?


Antes de intentar ajustar el tamaño del diseño posterior, primero compruebe qué estilo está usando su diálogo. Asegúrese de que no haya nada en el árbol de estilos

<item name="windowMinWidthMajor">...</item> <item name="windowMinWidthMinor">...</item>

Si eso está sucediendo, es tan simple como proporcionar tu propio estilo al [constructor del constructor que toma un ThemeResId] ( http://developer.android.com/reference/android/app/AlertDialog.Builder.html#AlertDialog.Builder(android.content.Context , int)) API disponible 11+

<style name="WrapEverythingDialog" parent=[whatever you were previously using]> <item name="windowMinWidthMajor">0dp</item> <item name="windowMinWidthMinor">0dp</item> </style>


Esto también funciona al agregar .getWindow().setLayout(width, height) después de show()

alertDialogBuilder .setMessage("Click yes to exit!") .setCancelable(false) .setPositiveButton("Yes",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { // if this button is clicked, close // current activity MainActivity.this.finish(); } }) .setNegativeButton("No",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { // if this button is clicked, just close // the dialog box and do nothing dialog.cancel(); } }).show().getWindow().setLayout(600,500);


No sé si puede cambiar el alto / ancho predeterminado de AlertDialog, pero si quiere hacerlo, creo que puede hacerlo creando su propio cuadro de diálogo personalizado. Solo tiene que darle a android:theme="@android:style/Theme.Dialog" en el android:theme="@android:style/Theme.Dialog" de Android para su actividad y puede escribir todo el diseño según sus requisitos. puede establecer el alto y ancho de su diálogo personalizado desde el XML de recursos de Android.


Ok, puedo controlar el ancho y el alto usando la clase Builder. solía

AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(layout); builder.setTitle("Title"); AlertDialog alertDialog = builder.create(); alertDialog.getWindow().setLayout(600, 400); //Controlling width and height. alertDialog.show();


Si desea agregar ancho y alto dinámicos según el marco de su dispositivo, puede hacer estos cálculos y asignar el alto y el ancho.

AlertDialog.Builder builderSingle = new AlertDialog.Builder(getActivity()); builderSingle.setTitle("Title"); final AlertDialog alertDialog = builderSingle.create(); alertDialog.show(); Rect displayRectangle = new Rect(); Window window = getActivity().getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(displayRectangle); alertDialog.getWindow().setLayout((int)(displayRectangle.width() * 0.8f), (int)(displayRectangle.height() * 0.8f));

PD: primero muestre el diálogo y luego intente modificar los atributos de diseño de la ventana


Solo un ligero cambio en el código de Sat, configure el diseño después del método show () de alertDialog.

AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(layout); builder.setTitle("Title"); alertDialog = builder.create(); alertDialog.show(); alertDialog.getWindow().setLayout(600, 400); //Controlling width and height.

O puedes hacerlo a mi manera.

alertDialog.show(); WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); lp.copyFrom(alertDialog.getWindow().getAttributes()); lp.width = 150; lp.height = 500; lp.x=-170; lp.y=100; alertDialog.getWindow().setAttributes(lp);