2016-09-27 3 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