2016-09-27 9 views

答えて

1

はい、通常の現象です。クリックしてください。hereですが、中国語です。お手数ですが、お手数ですが、

このような場合、あなたの自己によってトーストを書く必要があります。私はデモを提供することができますが、完全ではありません。あなたはそれを良くするためにいくつかの変更を行うことができます。

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); 
} 

}

そして、ここでレイアウトファイルを付属しています。

<?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" 
    /> 

私はフォーマットのためmarkdown.Sorryで新しいです。

+0

デバイスアプリの設定から通知を無効にした後でもトーストメッセージを表示できる方法はありますか? – Nishith

関連する問題