7.0


앱 테마를 FullScreen 으로 설정 하고, Manifest 에서 adjustResize 를 설정하면 스크롤이 되지 않는

문제가 발생하였다.


그럴때는 코드 단에서 아래 코드를 기입하면 해결 할 수 있다.


protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,                                                                                  WindowManager.LayoutParams.FLAG_FULLSCREEN);

        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);

        setContentView(R.layout.main_layout);

}


setContentView 를 하기 전에 위 코드를 삽입하여 해결하자!!

4.x 와 7.x 에서는 정상 동작 하였다. (5.x 는 확인하지 못함. 디바이스가 없음. 좀 사주라)



그러나!! 두둥!!

6.x 마쉬멜로우 버전에서는 위 코드 가지고는 해결이 되지 않았다.

6.0 대의 버그라고나 할까?

아래 코드로 해결하자!



private FrameLayout.LayoutParams mFrameLayoutParams;

private View mChildView;

private int usableHeightPrevious;


    protected void onCreate(Bundle savedInstanceState) {

FrameLayout frameLayout = (FrameLayout)findViewById(R.id.frameLayout);

        mChildView = frameLayout.getChildAt(0);

        mChildView.getViewTreeObserver().addOnGlobalLayoutListener(new                                                                             ViewTreeObserver.OnGlobalLayoutListener() {

            @Override

            public void onGlobalLayout() {

                resizeContent();

            }

        });


        mFrameLayoutParams = (FrameLayout.LayoutParams)mChildView.getLayoutParams();

    }


    private void resizeContent() {

        int usableHeightNow = computeUsableHeight();

        if (usableHeightNow != usableHeightPrevious) {

            int usableHeightSansKeyboard = mChildView.getRootView().getHeight();

            int heightDifference = usableHeightSansKeyboard - usableHeightNow;

            if (heightDifference > (usableHeightSansKeyboard/4)) {

                // keyboard probably just became visible

                mFrameLayoutParams.height = usableHeightSansKeyboard - heightDifference;

            } else {

                // keyboard probably just became hidden

                mFrameLayoutParams.height = usableHeightSansKeyboard;

            }


            mChildView.requestLayout();


            usableHeightPrevious = usableHeightNow;

        }

    }


    private int computeUsableHeight() {

        Rect r = new Rect();

        mChildView.getWindowVisibleDisplayFrame(r);

        return (r.bottom - r.top);

    }



'안드로이드 > TIP' 카테고리의 다른 글

Gradle Permission denied  (0) 2018.04.12
Aapt2Exception -part 2  (0) 2018.03.20
안드로이드 7.0 동작 변경 사항  (0) 2017.11.28
Multidex, ClassNotFoundException  (0) 2017.11.27
Aapt2Exception  (0) 2017.11.27
Posted by 자바리즘
,