2010-06-24 9 views
27

tengo este punto de vista de diálogo agradable, me puse mi clase UserInputDialog a:Llamada de diálogo androide sin que se funde el fondo

<LinearLayout android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

     <TextView 
     android:id="@+id/nameMessage" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="What is your name Captain?" 
     > 
     </TextView> 
     <EditText 
     android:id="@+id/nameEditText" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     > 
     </EditText> 
    <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="fill_parent" android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal"> 
    <Button 
     android:id="@+id/okButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="OK"> 
     </Button> 
     <Button android:id="@+id/cancelButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Cancel"> 
     </Button>    
    </LinearLayout> 
</LinearLayout> 

Quiero mi diálogo en aparecer, pero por el fondo para que no se desvanecen. es posible? Porque la vista que llama a este cuadro de diálogo tiene un fondo neato. Me gustaría que se muestre como un fondo para el diálogo.

Me encontraron esta línea:

<style name="doNotDim" parent="@android:style/Theme.Dialog"> 
    <item name="android:backgroundDimAmount">0</item> 
</style > 

pero no sabe cómo aplicar eso a mi de diálogo? Tengo una clase llamada public class UserInputDialog extends Dialog implements OnClickListener. Establece su vista de contenido al diseño descrito anteriormente.

Creo que estoy haciendo esto bien, simplemente no estoy seguro de cómo agregar ese estilo, así que NO puedo atenuar el fondo.

Pregunta secundaria: ¿Puede obtener nuevas miradas en su cuadro de diálogo (por ejemplo, mostrar una imagen o icono con su texto allí) utilizando Temas?

Respuesta

27

Crea un archivo res/values ​​/ styles.xml y agrégalo.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme.DoNotDim" parent="android:Theme"> 
    <item name="android:backgroundDimEnabled">false</item> 
    </style> 
</resources> 

Y aplique el tema a su actividad.

<activity android:name=".SampleActivity" android:theme="@style/Theme.DoNotDim"> 
+0

voluntad que hacen que cada diálogo que yo llamo de esa actividad usar el mismo estilo? – Codejoy

+0

En realidad, es una configuración de estilo en la Actividad, lo que significa que la actividad no disminuirá nunca. No tiene nada que ver con el diálogo. –

+0

Muy útil, gracias –

143

También puede eliminar el efecto tenue por código con lo siguiente:

dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
+2

Esto es más limpio y conciso, debería ser la respuesta aceptada. –

+0

funciona para bottomSheetDialog también ....... – adafrwefsefr

+0

¡¡¡Gran respuesta !!! Debería ser el aceptado. –

4

crear un estilo personalizado y colocarlo en sus valores carpeta

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="YourCustomStyle" parent="android:Theme"> 
    <item name="android:backgroundDimEnabled">false</item> 
    </style> 
</resources> 

Para establecer un estilo de un diálogo individual que puede usar

Dialog dialog = new Dialog(context, R.style.YourCustomStyle); 
0

Para mostrar el cuadro de diálogo como TrueCaller haga esto:

En el archivo styles.xml.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="myBackgroundStyle" parent="android:Theme.Dialog"> 
    <item name="android:backgroundDimEnabled">false</item> 
    </style> 
</resources> 

En AndroidManifest.xml hacer esto:

<activity android:name=".SampleActivity" android:theme="@style/myBackgroundStyle"> 
Cuestiones relacionadas