2011-12-31 17 views
5

Tengo una notificación de toast personalizada que tiene una imagen y un texto. La tostada personalizada funciona bien, sin embargo, me pregunto cómo puedo hacer que mi tostada personalizada herede el aspecto y la sensación de los brindis predeterminados. Quiero que se vea como el predeterminado con las agradables esquinas redondeadas y bordes.Android: notificación de toast personalizado heredar toast predeterminado

Así es como luce mi tostada personalizada.

<?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/chatIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="10dp" 
     android:src="@drawable/ic_chat"/> 
    <TextView android:id="@+id/text" 
     android:text="@string/unread_message_toast" 
       android:layout_width="wrap_content" 
       android:layout_height="fill_parent" 
       android:textColor="#FFF" 
       /> 
</LinearLayout> 

Respuesta

6

yo uso esto en una de mis aplicaciones. Cambie algunas cosas y debería funcionar para usted también.

Toast ImageToast = new Toast(getBaseContext()); 
       LinearLayout toastLayout = new LinearLayout(
         getBaseContext()); 
       toastLayout.setOrientation(LinearLayout.HORIZONTAL); 
       ImageView image = new ImageView(getBaseContext()); 
       image.setImageResource(R.drawable.easter_egg); 
       toastLayout.addView(image); 
       ImageToast.setView(toastLayout); 
       ImageToast.setDuration(Toast.LENGTH_SHORT); 
       ImageToast.show(); 
+0

Eso es genial! Muy flexible. Esto se puede reutilizar sin tener que agregar esos XML de diseño y los ID de los elementos de gestión. Anteriormente utilicé el método de inflado, no tan fácil de reutilizar. +1 – iozee

+1

Parece que ya no funciona. Lanza una excepción: java.lang.RuntimeException: Este Toast no se creó con Toast.makeText() – Silmarilos

0

probar este

<style name="Themename" parent="android:Theme.dialog"> 

de developer.android.com/guide/topics/ui/themes.html

0

Pruebe el código abajo.

Infla la vista desde el diseño XML y nómbrela como inflated_xml_view.

Toast toastView = new Toast(this); 
    toastView.setView(inflated_xml_view); 
    toastView.setDuration(Toast.LENGTH_LONG); 
    toastView.setGravity(Gravity.CENTER, 0,0); 
    toastView.show(); 
+0

Gracias por su respuesta, lamento no haber vuelto con usted. Voy a probar esto esta noche y premiaré a un ganador. – EpicOfChaos

1

Para obtener el fondo por defecto con las esquinas redondeadas agradables (en piruleta) usan:

android:background="@android:drawable/toast_frame" 

o

android:background="?android:attr/toastFrameBackground" 

Dará el fondo de la tostada en función de la versión de Android , si desea la última sugerencia, busque el archivo toast_frame.9.png en ..sdk \ platforms \ android- [late] Versión st] \ Datos de programa \ res \ drawable- [densidad]

Estilo de texto:

android:textAppearance="@android:style/TextAppearance.Toast" 
    android:textColor="@android:color/bright_foreground_dark" 
    android:shadowColor="#BB000000" 
    android:shadowRadius="2.75" 

Fuente: https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/transient_notification.xml

Cuestiones relacionadas