Cómo hacer que este fragmento de diálogo simple semi-transparente
Estoy tratando de hacer este diálogo simple semi-transparente:
class TestDialog extends SherlockDialogFragment { public TestDialog() { super(); } @Override public Dialog onCreateDialog(Bundle savedInstanceStateBundle ) { AlertDialog.Builder builder1 = new AlertDialog.Builder(getActivity()); // Get the layout inflater LayoutInflater inflater1 = getActivity().getLayoutInflater(); // Inflate and set the layout for the dialog // Pass null as the parent view because its going in the dialog layout builder1.setView(inflater1.inflate(R.layout.dlg_test, null)) // Add action buttons .setPositiveButton( "Ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { // sign in the user ... } }) .setNegativeButton( "Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { } }); return builder1.create(); } }
El diseño es el siguiente:
- Dos selectores de fechas en la misma actividad Android
- Margen de diseño / relleno en la parte superior del fragmento de diálogo
- Android: FragmentTransaction ocultar no funciona para DialogFragment
- Cómo hacer un DatePicker con DialogFragment y FragmentManager?
- Agregar botón positivo / negativo al cuadro de diálogo de DialogFragment
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/username" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginLeft="4dp" android:layout_marginRight="4dp" android:layout_marginBottom="4dp" android:hint="User name" /> </LinearLayout>
He intentado todo, desde el uso de un .png transparente como el fondo dibujable de la disposición lineal, a establecer el campo alfa a 0,5, a usar como un dibujable un color igual a 0. No soy capaz de hacer que el diálogo semi-transparente . No sé si es posible. Lo que me gustaría crear es un diálogo como el panel en la siguiente imagen: . Gracias. Nota1: el min sdk requerido es la versión 8, el objetivo es el último (en realidad, v17).
- Android - ListFragment dentro DialogFragment (AlertDialog): Fragmento no tiene una vista
- Android dialogFragment "a veces" no muestra la vista web
- Cómo mantener los botones DialogFragment positivos / negativos por encima del teclado virtual
- Fragmento de diálogo de pantalla completa de Android como aplicación de calendario
- OnContextItemSelected no se llama en un DialogFragment
- Cómo establecer valores de diálogo seleccionados en TextViews en Fragmento
- Android: cómo comprobar si el diálogo está mostrando
- Cómo retener correctamente un DialogFragment a través de la rotación?
En lugar de:
return builder1.create();
Trate de poner esto:
Dialog dialog = builder1.create(); Drawable d = new ColorDrawable(Color.BLACK); d.setAlpha(130); dialog.getWindow().setBackgroundDrawable(d); return dialog;
@Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); return dialog; }
Podrías poner
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
En el cuadro de diálogo onCreateView también.
Puede probar cualquiera de estos dos temas en su referencia de fragmento de diálogo.
yourdialogFragment.setStyle(style,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
o
yourdialogFragment.setStyle(style,android.R.style.Theme_Holo_Light_Dialog);
Espero que esto ayude.
Usted puede intentar hacer el fondo transparente, utilice esto si usted super clase es un diálogo:
getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
O esto si su superclase es un DialogFragment:
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
Mi otra solución era similar a "kaushal trivedi" uno. Utilizar DialogFragments:
public class MyDialogFragment extends DialogFragment { ... @Override public void onCreate(Bundle savedInstance){ super.onCreate(savedInstance); setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.my_dialog, container,false); } }
Esto hace que su diálogo sea de pantalla completa y sin fondo, por lo que puede poner lo que quiera en su interior.
Prueba esto
public class Dialogs extends DialogFragment { public Dialogs() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style. Theme_WallpaperSettings); } }
Esto es lo que hice para lograr la translucidez con AlertDialog.
Creado un estilo de encargo:
<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();
Enlace a mi respuesta a una pregunta relacionada: https://stackoverflow.com/a/36311627/4344057