Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Tamaño del cuadro de diálogo personalizado para coincidir con Theme.Holo.Light.Dialog

Si tengo una actividad que tiene su tema establecido en Theme.Holo.Light.Dialog , que se escala grande. Se llenará la pantalla en los teléfonos en el modo de retrato casi en su totalidad, pero en el modo de paisaje no se extenderá excesivamente largo. Por ejemplo, en esta imagen de Google, puede ver el cuadro de diálogo no llenar toda la pantalla.

Introduzca aquí la descripción de la imagen

No se colapsará para coincidir con el ancho del título como lo que sucederá si tiene su propia construcción de diálogo por tener una clase que amplía la clase de diálogo.

Esto es lo que sucederá con mi diseño.

Introduzca aquí la descripción de la imagen

¿Qué propiedades necesito aplicar al LinearLayout para hacer que la escala sea bonita?

  • Tener la aplicación ejecutándose sobre otra aplicación
  • Crear un diálogo transparente encima de la actividad
  • El método showDialog (int) del tipo Actividad está obsoleto en android?
  • Toque fuera del cuadro de diálogo de Android para descartarlo?
  • Evitar que el diálogo de actividad de Android se cierre en el exterior
  • ¿Cómo puedo enviarBroadcast (intención) de myDialog y recibir en myActivity?
  • No puedo ver el progreso de spinner en ProgressDialog en Lollipop
  • Actividad se ha filtrado ventana / diálogo (esto de nuevo!)
  • 5 Solutions collect form web for “Tamaño del cuadro de diálogo personalizado para coincidir con Theme.Holo.Light.Dialog”

    Puede utilizar Theme.Holo.Light.Dialog.MinWidth para dimensionar su diseño correctamente.

    De la documentación:

    Public static final int Theme_Holo_Light_Dialog_MinWidth

    Variante de Theme.Holo.Light.Dialog que tiene una anchura mínima agradable para un diálogo regular.

    La forma de usar esto sería pasar un ContextThemeWrapper en lugar de Context (usando esto) al constructor de Dialog personalizado:

     YourCustomDialog cDialog = new YourCustomDialog( new ContextThemeWrapper(this, android.R.style.Theme_Holo_Light_Dialog_MinWidth)); 

    Así es como se define Theme.Holo.Light.Dialog.MinWidth :

     <style name="Theme.Holo.Light.Dialog.MinWidth"> <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item> <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item> </style> 

    Desde dimens.xml :

    @android: dimen / dialog_min_width_major:

     <!-- The platform's desired minimum size for a dialog's width when it is along the major axis (that is the screen is landscape). This may be either a fraction or a dimension. --> <item type="dimen" name="dialog_min_width_major">65%</item> 

    @android: dimen / dialog_min_width_minor:

     <!-- The platform's desired minimum size for a dialog's width when it is along the minor axis (that is the screen is portrait). This may be either a fraction or a dimension. --> <item type="dimen" name="dialog_min_width_minor">95%</item> 

    Como parece, el ancho del cuadro de diálogo en la imagen que publicó es alrededor del 65%. En el modo de retrato, sería del 95%.

    Honestamente, el ancho no parece 95% en modo retrato, pero es mejor que antes :):

    Introduzca aquí la descripción de la imagen

    Simplemente agregue dos valores a su tema personalizado.

     <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item> <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item> 

    P.ej

     <style name="MyDialog" parent="ThDialogBase"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item> <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item> </style> 

    En mi cuadro de diálogo personalizado, utilizo las siguientes propiedades y establezco el ancho del diálogo para que coincida con el padre y su escala de ancho correctamente.

      <item name="android:windowBackground">@null</item> <item name="android:windowIsFloating">false</item> 

    ¿Puede intentar cambiar su dimensión de diálogo en tiempo de ejecución, como esto:

     DisplayMetrics metrics = getResources().getDisplayMetrics(); int width = metrics.widthPixels; yourDialog.show(); yourDialog.getWindow().setLayout((6 * width)/7, LayoutParams.WRAP_CONTENT); 

    o

     Dialog yourDialog = dialogFragment.getDialog(); yourDialog.getWindow().setLayout((6 * width)/7, (4 * height)/5); 

    Si utiliza Fragmentos.

    Dos escenarios

    a. Si usted lo necesita para llenar la pantalla completamente establecer sus padres minWidth y 1000dp a 1000dp

     LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:minWidth="1000dp" android:minHeight="1000dp" 

    segundo. Si lo necesita a escala sin llenar toda la pantalla. Establezca uno de los hijos de su LinearLayout dentro de un RelativeLayout y establezca el relative layouts width to match_parent .

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.