studio - input dialog android
Cuadro de diálogo con fondo transparente en Android. (16)
Agregar este codigo
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
Editar
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
¿Cómo elimino el fondo negro de un cuadro de diálogo en Android? La foto muestra el problema.
final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger);
De alguna manera, la solución de Zacharias no me funcionó, así que he usado el siguiente tema para resolver este problema ...
<style name="DialogCustomTheme" parent="android:Theme.Holo.Dialog.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
</style>
Uno puede configurar este tema para el diálogo como abajo
final Dialog dialog = new Dialog(this, R.style.DialogCustomTheme);
¡¡Disfrutar!!
El cuadro emergente de diálogo rellena el color de fondo negro o el color del tema por defecto, por lo que debe establecer el fondo TRANSPARENT
en el cuadro de diálogo. Intenta a continuación el código: -
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.splash);
dialog.show();
En caso de que extendiera la clase DialogFrament
, puede establecer el tema con:
setStyle(DialogFragment.STYLE_NORMAL, R.style.customDialogTheme);
Y luego cree el tema personalizado en su archivo styles.xml (vea la respuesta de @ LongLv para los parámetros)
No olvide agregar <item name="android:windowCloseOnTouchOutside">true</item>
si desea que el cuadro de diálogo se cierre si el usuario toca fuera del cuadro de diálogo.
En mi caso la solución funciona así:
dialog_AssignTag.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
Y además en Xml de diálogo personalizado:
android:alpha="0.8"
Esto es lo que hice para lograr la translucidez con AlertDialog.
Creado un estilo personalizado:
<style name="TranslucentDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert">
<item name="android:colorBackground">#32FFFFFF</item>
</style>
Y luego crear el diálogo con:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.TranslucentDialog);
AlertDialog dialog = builder.create();
He enfrentado el problema más simple y la solución que se me ocurrió fue aplicar un TEMA de fondo transparente. Escribe estas líneas en tus estilos.
<item name="android:windowBackground">@drawable/blue_searchbuttonpopupbackground</item>
</style>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
Y luego agregar
android:theme="@style/Theme.Transparent"
En su archivo de manifiesto principal, dentro del bloque de la actividad de diálogo.
Más en su conjunto de XML de actividad de diálogo
android:background= "#00000000"
Intenta esto en tu código:
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
Definitivamente funcionará ... en mi caso ...! mi amigo
La misma solución que zGnep pero usando xml:
android:background="@null"
Para cualquier persona que use un cuadro de diálogo personalizado con una clase personalizada, necesita cambiar la transparencia en la clase agregue esta línea en onCreate ():
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
Puedes usar el:
setBackgroundDrawable(null);
Método. Y lo siguiente es el documento:
/**
* Set the background to a given Drawable, or remove the background. If the
* background has padding, this View''s padding is set to the background''s
* padding. However, when a background is removed, this View''s padding isn''t
* touched. If setting the padding is desired, please use
* {@link #setPadding(int, int, int, int)}.
*
* @param d The Drawable to use as the background, or null to remove the
* background
*/
Un problema que encontré con todas las respuestas existentes es que los márgenes no se conservan. Esto se debe a que todos anulan el atributo android:windowBackground
, que es responsable de los márgenes, con un color sólido. Sin embargo, hice algunas excavaciones en el SDK de Android y encontré el dibujable de fondo de la ventana predeterminada, y lo modifiqué un poco para permitir diálogos transparentes.
Primero, copie /platforms/android-22/data/res/drawable/dialog_background_material.xml a su proyecto. O simplemente copie estas líneas en un nuevo archivo:
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:inset="16dp">
<shape android:shape="rectangle">
<corners android:radius="2dp" />
<solid android:color="?attr/colorBackground" />
</shape>
</inset>
Tenga en cuenta que android:color
está configurado como ?attr/colorBackground
. Este es el gris / blanco sólido predeterminado que ves. Para permitir que el color definido en android:background
en su estilo personalizado sea transparente y muestre la transparencia, todo lo que tenemos que hacer es cambiar ?attr/colorBackground
a @android:color/transparent
. Ahora se verá así:
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:inset="16dp">
<shape android:shape="rectangle">
<corners android:radius="2dp" />
<solid android:color="@android:color/transparent" />
</shape>
</inset>
Después de eso, vaya a su tema y agregue esto:
<style name="MyTransparentDialog" parent="@android:style/Theme.Material.Dialog">
<item name="android:windowBackground">@drawable/newly_created_background_name</item>
<item name="android:background">@color/some_transparent_color</item>
</style>
Asegúrese de reemplazar newly_created_background_name
con el nombre real del archivo some_transparent_color
que acaba de crear, y reemplace some_transparent_color
con el fondo transparente deseado.
Después de eso, todo lo que tenemos que hacer es establecer el tema. Use esto al crear el AlertDialog.Builder
:
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyTransparentDialog);
¡Entonces simplemente construya, cree y muestre el diálogo como de costumbre!
usa este código funciona conmigo:
Dialog dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar);
dialog.show();
Atención :
no use el constructor para cambiar el fondo
Dialog dialog = new Dialog.Builder(MainActivity.this)
.setView(view)
.create();
dialog.show();dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
cambiar a
Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
mDialog.show();
Cuando se utiliza Dialog.builder - no está dando la opción getwindow () en él.
<style name="NewDialog">
<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>
usar en java
Dialog dialog = new Dialog(this, R.style.NewDialog);
Espero que te ayude!
Window window = d.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Este es mi camino, puedes intentarlo!