Toast 响应点击事件
import java.lang.reflect.Field; import android.content.Context; import android.util.Log; import android.view.View; import android.view.WindowManager; import android.view.View.OnLongClickListener; import android.widget.TextView; import android.widget.Toast; public class ClickToast { public static void showToast(final Context context, int duration) { Toast mToast = null; if (mToast == null) { TextView tv = new TextView(context); tv.setLongClickable(true); tv.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View arg0) { Log.i("TAG", "ddddddddddddddddd"); return true; } }); tv.setText("fffffffffffffffffffffffffffffffffffff"); mToast = Toast.makeText(context.getApplicationContext(), "", duration); mToast.setView(tv); } try { Object mTN; mTN = getField(mToast, "mTN"); if (mTN != null) { Object mParams = getField(mTN, "mParams"); if (mParams != null && mParams instanceof WindowManager.LayoutParams) { WindowManager.LayoutParams params = (WindowManager.LayoutParams) mParams; // Toast可点击 params.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; // 设置viewgroup宽高 params.width = WindowManager.LayoutParams.MATCH_PARENT; // 设置Toast宽度为屏幕宽度 params.height = WindowManager.LayoutParams.WRAP_CONTENT; // 设置高度 } } } catch (Exception e) { e.printStackTrace(); } mToast.show(); } //反射获取filed private static Object getField(Object object, String fieldName) throws NoSuchFieldException, IllegalAccessException { Field field = object.getClass().getDeclaredField(fieldName); if (field != null) { field.setAccessible(true); return field.get(object); } return null; } }