style - themes android gratis
Fondo de tostadas cambiando para coincidir con el tema de la actividad (3)
Aquí viene el ejemplo completo, que se utilizará para Toast personalizado en todas 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>
He creado un tema personalizado para mis actividades que todos usan. En el tema, establezco android: background, y esto hace que cualquier mensaje de diálogo o de brindis se vea muy extraño.
¿Cómo evito que Toast y los otros diálogos absorban las propiedades del tema?
Me doy cuenta de que la pregunta ha sido respondida y el post es bastante antiguo en esta etapa Sin embargo, pensé que dejaría una respuesta para aquellos que se encuentren con esta pregunta.
Me encontré con un problema con este problema hoy y la forma en que lo resolví fue mostrando mis mensajes de Toast de esta manera:
Toast.makeText(getApplicationContext(), "Checking login details...", Toast.LENGTH_SHORT).show();
A diferencia de esto (suponiendo que el mensaje se llama desde una vista):
Toast.makeText(v.getContext(), "Checking login details...", Toast.LENGTH_SHORT).show();
Se aclararon los problemas que estaba teniendo. De todos modos espero que ayude. Aquí está el enlace a mi pregunta sobre un tema similar.
Puede crear fácilmente tostadas personalizadas por el siguiente código:
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 puedes instanciar un brindis 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();
La personalización del diálogo es una rutina más compleja. Pero hay una solución similar.