¿Cómo puedo obtener una ventana de actividad de estilo de diálogo para llenar la pantalla?

Estoy usando una actividad con el conjunto de temas de diálogo, y quiero que sea a pantalla completa. Intenté todo tipo de cosas, incluso pasando por WindowManager para expandir la ventana a ancho y alto completos manualmente, pero nada funciona.

Aparentemente, una ventana de diálogo (o una actividad con el tema del diálogo) solo se expandirá según su contenido, pero incluso eso no siempre funciona. Por ejemplo, muestro un círculo de barra de progreso que tiene el ancho y el alto establecidos en FILL_PARENT (igual que su contenedor de diseño), pero aún así, el cuadro de diálogo se ajusta a la barra de progreso mucho más pequeña en lugar de llenar la pantalla.

Debe haber una manera de mostrar algo pequeño dentro de una ventana de diálogo, pero que se expanda a tamaño de pantalla completa sin que también se cambie el tamaño del contenido.

Encontré la solución:

En su actividad que tiene el estilo de Theme.Dialog establecido, haga esto:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); } 

Es importante que llame a Window.setLayout() después de llamar a setContentView() ; de lo contrario, no funcionará.

Puede agregar estos valores a su estilo android: windowMinWidthMajor y android: windowMinWidthMinor

  

El ancho mínimo que permite la ventana, a lo largo del eje menor de la pantalla.

Solo quiero llenar solo el 80% de la pantalla para que me haya gustado esto a continuación

  DisplayMetrics metrics = getResources().getDisplayMetrics(); int screenWidth = (int) (metrics.widthPixels * 0.80); setContentView(R.layout.mylayout); getWindow().setLayout(screenWidth, LayoutParams.WRAP_CONTENT); //set below the setContentview 

funciona solo cuando coloco la ventana getwindow (). setLayout … debajo de setContentView (..)

gracias @Matthias

Para el diálogo Esto puede ser útil para alguien. Quiero un diálogo para tomar el ancho completo de la pantalla. buscó mucho pero nada encontró útil. Finalmente esto funcionó para mí:

 mDialog.setContentView(R.layout.my_custom_dialog); mDialog.getWindow().setBackgroundDrawable(null); 

después de agregar esto, mi cuadro de diálogo aparece en todo el ancho de la pantalla.

Envuelva su dialog_custom_layout.xml en RelativeLayout en lugar de cualquier otro diseño . Eso funcionó para mí.

Establezca un ancho mínimo en el diseño más alto.

 android:minWidth="300dp" 

Por ejemplo:

     

La respuesta de Matthias es correcta en su mayoría, pero aún no está llenando toda la pantalla, ya que tiene un pequeño margen en cada lado (señalado por @Holmes). Además de su código, podemos solucionar esto ampliando el estilo Theme.Dialog y agregando algunos atributos como este.

  

Entonces simplemente declaramos Activity con el tema establecido en MyDialog :

  

Esto sería útil para alguien como yo. Crear estilo de diálogo personalizado:

  

En el tema del conjunto de archivos AndroidManifest.xml para la actividad deseada:

  

Eso es todo, no hay necesidad de llamar a los métodos de manera programática.

Esta respuesta es una solución para aquellos que usan “Theme.AppCompat.Dialog” o cualquier otro descendiente de “Theme.AppCompat.Dialog” como “Theme.AppCompat.Light.Dialog”, “Theme.AppCompat.DayNight.Dialog”, etc. Yo mismo tengo que usar el diálogo de AppCompat porque uso AppCompatActivity como se extiende para todas mis actividades. Habrá un problema que hará que el diálogo tenga relleno en cada lado (arriba, derecha, abajo e izquierda) si usamos la respuesta aceptada.

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); } 

En el estilo de tu actividad, agrega estos códigos

  

Como puede observar, el problema que genera el relleno en nuestro cuadro de diálogo es “android: windowBackground”, por lo que aquí hago que el fondo de la ventana sea nulo.

En su archivo de manifiesto donde se define nuestra actividad

   

sin barra de acción