Tostar el fondo cambiando para que coincida con el tema de la actividad
He creado un tema personalizado para mis actividades que todos utilizan. En el tema, establezco android: fondo, y esto sucede para hacer que cualquier diálogo o mensaje del pan tostado parezca muy extraño.
¿Cómo evito que Tostada y los otros diálogos absorban las propiedades del tema?
- ¿Cómo setTheme a una actividad en tiempo de ejecución? No funciona llamada setTheme antes onCreate y setContentView
- Cómo cambiar el tema actual en tiempo de ejecución en Android
- TextView de Android cambia textColor con tema
- ¿Existen bibliotecas de temas de código abierto o gratuitas para Android?
- El significado de android: colorForeground
- Anulación de los atributos de estilo referenciados
- Cambiar el color de la barra de acciones de Android 5.0
- ¿Cómo proporcionar opciones de temas en una aplicación de Android?
- Configuración del estilo de TextViews subyacentes en style.xml
- ¿Cómo se establece el color del título de la nueva barra de herramientas?
- Diálogo personalizado de la ruleta para Android
- Eliminar el efecto sombra en el botón android
- Elegir un estilo / tema mediante programación en tiempo de ejecución
Puede crear fácilmente tostadas personalizadas con el código siguiente:
Toast toast = Toast.makeText(context, resTxtId, Toast.LENGTH_LONG); View view = toast.getView(); view.setBackgroundResource(R.drawable.custom_bkg); TextView text = (TextView) view.findViewById(android.R.id.message); /*here you can do anything with text*/ toast.show();
O puede instanciar un tostado completamente personalizado:
Toast toast = new Toast(context); toast.setDuration(Toast.LENGTH_LONG); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.custom_layout, null); toast.setView(view); toast.show();
Personalizar el diálogo es una rutina más compleja. Pero hay una solución similar.
Me doy cuenta de que la pregunta ha sido contestada y el post es bastante antiguo en esta etapa. Sin embargo, pensé que iba a dejar una respuesta para aquellos que se encuentran con esta cuestión.
Me encontré con problemas con este problema de hoy y la forma en que lo resolví fue mediante la visualización de mis mensajes Toast como este:
Toast.makeText(getApplicationContext(), "Checking login details...", Toast.LENGTH_SHORT).show();
A diferencia de esto (suponiendo que el mensaje se está llamando desde una vista):
Toast.makeText(v.getContext(), "Checking login details...", Toast.LENGTH_SHORT).show();
Acabó los problemas que estaba teniendo. De todos modos espero que ayude. Aquí hay un enlace a mi pregunta sobre un tema similar.
Color del fondo de la tostada que es cambiado
Aquí viene el ejemplo completo, que se utiliza para brindar personalizado a través de las actividades.
DisplayToast
// display customized Toast message public static int SHORT_TOAST = 0; public static int LONG_TOAST = 1; public static void displayToast(Context caller, String toastMsg, int toastType){ try {// try-catch to avoid stupid app crashes LayoutInflater inflater = LayoutInflater.from(caller); View mainLayout = inflater.inflate(R.layout.toast_layout, null); View rootLayout = mainLayout.findViewById(R.id.toast_layout_root); ImageView image = (ImageView) mainLayout.findViewById(R.id.image); image.setImageResource(R.drawable.img_icon_notification); TextView text = (TextView) mainLayout.findViewById(R.id.text); text.setText(toastMsg); Toast toast = new Toast(caller); //toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); toast.setGravity(Gravity.BOTTOM, 0, 0); if (toastType==SHORT_TOAST)//(isShort) toast.setDuration(Toast.LENGTH_SHORT); else toast.setDuration(Toast.LENGTH_LONG); toast.setView(rootLayout); toast.show(); } catch(Exception ex) {// to avoid stupid app crashes Log.w(TAG, ex.toString()); } }
Y toast_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toast_layout_root" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:background="#DAAA" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginRight="10dp" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="fill_parent" android:textColor="#FFF" /> </LinearLayout>
- Cómo agregar el acceso directo de la aplicación a la pantalla de inicio
- Android, ¿cuál es la clase equivalente de DrawerLayout cuando no se usa la biblioteca de soporte?