2016-09-27 2 views

Répondre

1

Oui, c'est un phénomène habituel. Cliquez sur here mais c'est en chinois. J'espère que cela peut vous aider.

Dans ce cas, il est nécessaire d'écrire un Toast par vous-même. Je peux fournir une démo mais elle n'est pas complète. Vous pouvez faire quelques modifications pour l'améliorer.

public class MToast { 
    private Context mContext; 
    private WindowManager wm; 
    private int mDuration; 
    private View mNextView; 
    public static final int LENGTH_SHORT = 1500; 
    public static final int LENGTH_LONG = 3000; 

public MToast(Context context) { 
    mContext = context.getApplicationContext(); 
    wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); 
} 

public static MToast makeText(Context context, CharSequence text, 
          int duration) { 
    MToast result = new MToast(context); 
    LayoutInflater inflate = (LayoutInflater) context 
      .getApplicationContext().getSystemService(
        Context.LAYOUT_INFLATER_SERVICE); 
    View v = inflate.inflate(R.layout.dialog_toast,null); 
    TextView tv = (TextView) v.findViewById(R.id.tvMsg); 
    tv.setText(text); 
    result.mNextView = v; 
    result.mDuration = duration; 
    return result; 
} 

public static MToast makeText(Context context, int resId, int duration) 
     throws Resources.NotFoundException { 
    return makeText(context, context.getResources().getText(resId), duration); 
} 

public void show() { 
    if (mNextView != null) { 
     WindowManager.LayoutParams params = new WindowManager.LayoutParams(); 
     params.gravity = Gravity.CENTER | Gravity.CENTER_HORIZONTAL; 
     params.height = WindowManager.LayoutParams.WRAP_CONTENT; 
     params.width = WindowManager.LayoutParams.WRAP_CONTENT; 
     params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 
       | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE 
       | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 
     params.format = PixelFormat.TRANSLUCENT; 
     params.y = dip2px(mContext, 64); 
     params.type = WindowManager.LayoutParams.TYPE_TOAST; 
     wm.addView(mNextView, params); 
     new Handler().postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       if (mNextView != null) { 
        wm.removeView(mNextView); 
        mNextView = null; 
        wm = null; 
       } 
      } 
     }, mDuration); 
    } 
} 

/** 
* transfer dp into px 
* 
* @param context 
* @param dipValue 
* @return int 
*/ 
private int dip2px(Context context, float dipValue) { 
    final float scale = context.getResources().getDisplayMetrics().density; 
    return (int) (dipValue * scale + 0.5f); 
} 

}

Et vient ici le fichier de mise en page.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/waiting_bg" 
    android:layout_gravity="center" 
    android:gravity="center" 
    android:orientation="horizontal"> 
<TextView 
    android:id="@+id/tvMsg" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:textSize="15sp" 
    android:textColor="@color/mColor_white" 
    /> 

Je suis nouveau à markdown.Sorry pour le format.

+0

Est-il possible de montrer les messages toast même après avoir désactivé les notifications à partir des paramètres de l'application de l'appareil? – Nishith