2011-05-31 11 views
17

Ha habido preguntas similares a esto relacionadas con las actividades de diálogo y cómo hacer que estas a pantalla completa, pero tengo un problema ligeramente diferente. Quiero que estos diálogos envuelvan el contenido de la actividad.Actividad de diálogo para ajustar el contenido

Ahora, las "actividades de diálogo" todas heredar el siguiente tema,

<style name="tabDialog" parent="@android:Theme.Dialog"> 
    <item name="android:windowBackground">@drawable/panel_background</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFullscreen">false</item> 
</style> 

Ejemplo de definición de la actividad en el manifiesto,

<activity android:name=".TabSettingsActivity" 
    android:theme="@style/tabDialog" android:excludeFromRecents="true" 
    android:configChanges="keyboardHidden" /> 

El contenido visión vista padre se define así,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:background="@layout/dialog_rounded_background" 
    android:orientation="vertical"> 

y todas las vistas secundarias en el diseño también especifican wrap_content para ambas dimensiones s. He intentado usar RelativeLayout como padre también, pero lo mismo.

Después de la vista de contenido se ha establecido en onCreate de la actividad, hago esto

getWindow().setLayout(LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT); 

Ninguna de estas cosas en realidad parece hacer ninguna diferencia en absoluto. El problema se relaciona principalmente con la altura del diálogo, que es aproximadamente un 50% más grande de lo necesario. La mitad del diálogo es solo espacio muerto. Establecer las dimensiones de la vista raíz a las unidades dp codificadas resuelve el problema, pero esto parece una solución más que una solución.

¿Alguna idea a alguien?

Gracias de antemano.

Cheers

+1

¿Has resuelto el problema? Si es así, por favor hágamelo saber. – Christian

+0

Hy, ¿se las arreglaron para encontrar una solución? Gracias – Paul

+0

¿Está usando 'Dialogue' como' Activity' o está usando 'Activity' como' Dialogue'? ¿por qué? – Xcihnegn

Respuesta

1

Pruebe a configurar el layout_margin. Si eso falla, entonces el margen de actividad regular y los márgenes pueden ser los culpables.

1

estoy usando un DialogFragment y funciona bien si se utiliza setStyle

public class MyDialogFragment extends DialogFragment { 
     public MyDialogFragment() { 
      setStyle(STYLE_NO_FRAME, android.R.style.Theme_Dialog); 
     } 
    } 
3

probar esto. Esto resolvió mi problema.

<style name="NewDialog" parent="@android:style/Theme.Dialog"> 
     <item name="android:windowFrame">@null</item> 
     <item name="android:windowBackground">@android:color/transparent</item> 
     <item name="android:windowIsFloating">true</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowTitleStyle">@null</item> 
     <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
     <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
     <item name="android:backgroundDimEnabled">false</item> 
     <item name="android:background">@android:color/transparent</item> 
    </style> 
+0

no funcionó para mí –

+0

La mayor parte de este código no hace nada (=> ya está predefinido en el estilo principal). Lo único que está cambiando es establecer el color de fondo en transparente y eliminar el estilo del título (que no parece tener ningún efecto) – Aenadon

2

El fondo de diálogo en vista padre "dialog_rounded_background" que está utilizando es el problema, ya que puede ser tan grande como su tamaño de pantalla es. Por favor revisa eso.

1

Utilice el cuadro de diálogo personalizado para el mismo.

Simplemente configure xml para completar la pantalla con el padre layout_width al fill_parent.

1

Simplemente se puede obtener el ancho y la altura de la pantalla del dispositivo Android por:

//Define the size of layout 
    Display display = getWindowManager().getDefaultDisplay(); 
    int widths = display.getWidth(); 
    int heights = display.getHeight(); 

continuación, puede especificar la anchura o altura sobre la base de estos valores! Como:

getWindow().setLayout(widths , 
         heights); 

la esperanza que esto sea útil :) ,,,

1

uso tema Theme.AppCompat.Light.Dialog.Alert lugar .. debe retornar la altura de diálogo para envolver el contenido.

Cuestiones relacionadas