2013-04-17 11 views
6

Kullanıcıya bazı bilgileri görüntülemek istiyorum, ancak kullanıcının başka bir yere dokunduğunda veya geri düğmesine basana kadar bilgilerin reddedilmesini istemiyorum. Bunun bariz seçeneğinin, metni bir diyalogda (bir tostun aksine) göstermesi olduğunun farkındayım. Diyaloğumun Tost sistemine benzemesini istiyorum. transient_notification.xml düzenini (ve ilgili kaynakları) kopyalayabildiğimi biliyorum, ancak Toast stilinin cihaz ve işletim sistemi tarafından büyük ölçüde değişmesi nedeniyle, bu iyi bir eşleşme elde etme olasılığı düşük.Android: Tost benzeri bir iletişim oluşturmanın iyi bir yolu var mı?

Yani, sistem Tost stilini miras alan bir Dialog oluşturmanın iyi bir yolu var mı?

+0

tost bu şekilde çalışması anlamına da gelmektedir. Özel bir iletişim kutusu oluşturabilir ve ihtiyaçlarınıza göre şekillendirebilirsiniz. Özel temalar var. Sorun olmamalı – Raghunandan

cevap

1

İki olası öneri. Bir olasılık, bir PopupWindow ve özel XML kullanmaktır. Uygulaması çok zor olmamalı. Başka bir seçenek açık kaynak projesi Crouton (https://github.com/keyboardsurfer/Crouton) bulunan Toast değiştirme sistemini kullanmak olabilir. Temel olarak daha estetik olarak hoş bir kullanıcı arayüzü sunuyor ve kullanıcının, işten atmadan önce tıklaması için beklediği seçenekleri biliyorum. Demolarını Play mağazasından indirebilirsiniz.

3

veya bir tost

public static Toast currentToast; 
/** 
* Use a custom display for Toasts. 
* 
* @param message 
*/ 
public static void customToast(String message) { 
    // Avoid creating a queue of toasts 
    if (currentToast != null) { 
     // Dismiss the current showing Toast 
     currentToast.cancel(); 
    }  
    //Retrieve the layout Inflater 
    LayoutInflater inflater = (LayoutInflater) 
      context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    //Assign the custom layout to view 
    View layout = inflater.inflate(R.layout.custom_toast, null); 
    //Return the application context 
    currentToast = new Toast(context.getApplicationContext()); 
    //Set toast gravity to center 
    currentToast.setGravity(Gravity.CENTER | Gravity.CENTER, 0, 0); 
    //Set toast duration 
    currentToast.setDuration(Toast.LENGTH_LONG); 
    //Set the custom layout to Toast 
    currentToast.setView(layout); 
    //Get the TextView for the message of the Toast 
    TextView text = (TextView) layout.findViewById(R.id.text); 
    //Set the custom text for the message of the Toast 
    text.setText(message); 
    //Display toast 
    currentToast.show(); 
    // Check if the layout is visible - just to be sure 
    if (layout != null) { 
     // Touch listener for the layout 
     // This will listen for any touch event on the screen 
     layout.setOnTouchListener(new OnTouchListener() {   
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       // No need to check the event, just dismiss the toast if it is showing 
       if (currentToast != null) { 
        currentToast.cancel(); 
        // we return True if the listener has consumed the event 
        return true; 
       } 
       return false; 
      } 
     }); 
    } 
} 

ve custom_toast.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:padding="10dip" 
    android:background="@drawable/custom_toast_shape"> 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textStyle="bold" 
     android:textColor="@color/blue" 
     android:textSize="16sp" 
     android:text="@string/app_name" 
    /> 

    <View 
     android:layout_gravity="center" 
     android:layout_width="fill_parent" 
     android:layout_height="2dip" 
     android:background="@color/blue" 
    /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="@color/black" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:maxEms="15" 
     android:gravity="center_horizontal" 
     android:id="@+id/text" 
    /> 
</LinearLayout> 

T görüntülemek için özel düzenini

Özel yöntemi kullanabilirsiniz o bu sadece DÜZENLEME

Utils.customToast("Just a test to see if toast is working!\nPerfect"); 

numarasını kullanacak Ben yöntemini biraz değiştirdiniz. Şimdi bir tost kuyruğu yaratmayacak ve normal tost gibi dokunulduğunda işten atılacak. başkası artırabilirsiniz

, bunu yapmak için çekinmeyin :)

İlgili konular