본문 바로가기
안드로이드

[Android] 다이얼로그에서 Edittext softkeyboard 올라오면 스크롤 안 되는 현상

by Banlim 2020. 12. 2.

[삽질의 기록]

 

임의의 버튼을 클릭하면 사전에 구현한 CustomDialog를 띄우는 기능을 구현했다.

이 CustomDialog에는 EditText Component가 포함되어 있으며, EditText는 자신에게 focus가 들어오면, 자동으로 soft keyboard를 올려준다. 이 때, dialog가 soft keyboard에 가려져 가려진 부분에 있는 버튼을 누를 수 없다는 불편함이 생겼다.

 

우선, 해당 다이얼로그에 ScrollView를 추가해주어야 한다. (본인이 스크롤을 하고싶은 구간에 하면 된다.)

API 30의 경우 ScrollView만 추가해도 자동적으로 soft keyboard가 나와도 스크롤이 가능했다.

하지만, API 29이하의 디바이스에서는 ScrollView를 추가했음에도 스크롤 기능이 작동하지 않았다.

 

따라서, 디바이스의 API level을 확인한 후, 29이하일 경우 다이얼로그가 resize 되면서 스크롤 또한 가능하도록 구현하였다. 여기서 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 부분을 Dialog를 그리는 class에 추가하면 soft keyboard가 나타나도 해당 다이얼로그는 스크롤을 할 수 있게 된다.

 

CustomDialog.java

public class CustomDialog extends Dialg{
	
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState){
    	super.onCreate(savedInstanceState);
        if(Build.VERSION.SDK_INT < 30)
        	getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
        else
        	getWindow().setDecorFitsSystemWindows(true);
            
        ......
    }
    
    ......
}