안드로이드에서 Floating Window를 최상단에 띄워놓은 상태에서 키보드가 표시되면 Floating Window가 이를 인지해서 키보드를 가리지 않거나 Layout을 변경하도록 하기 위한 방법입니다.
Floating Window를 Window Manager에 추가할 때 아래와 같이 Layout 파라메터를 입력하시면 됩니다.
: : params= new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT); params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION; preview.setBackgroundColor(Color.RED); params.gravity = Gravity.LEFT; params.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; //가장 중요한 플래그 입니다 preview.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Log.d("GUNMAN", "SOMETHING HAPPENDED"); //키보드가 표시되거나 사라질때 발생하는 이벤트 입니다. // View draw, do Sth int height = preview.getMeasuredHeight(); // View의 높이가 바뀌어 있습니다. } }); getWindowManager().addView(preview, params);