개발자가 되고 싶은 1人

안드로이드 웹뷰에서 키보드 사라짐 증상 본문

프로그래밍/안드로이드

안드로이드 웹뷰에서 키보드 사라짐 증상

인생을 노트하자 2022. 2. 23. 11:45

안드로이드에서 웹뷰로 웹페이지를 띄울때 키보드 사라짐 증상에 대한 해결책을 남겨보고자 한다.

 

웹뷰 또는 모바일웹에서 그리드에서 input 박스 선택시 키보드가 나타났다 바로 사라지는 증상이 있는데.

 

안드로이드에서는 AndroidManifest.xml에서 아래와 같이 추가하면된다.

 

 

<activity
    android:name="xxx.xxx.xxx.WebViewact"
    android:screenOrientation="portrait"
    android:theme="@style/AppThemeNoActionBar" />

에서 

<activity
    android:name="xxx.xxx.xxx.WebViewact"
    android:screenOrientation="portrait"
    android:theme="@style/AppThemeNoActionBar"
    android:windowSoftInputMode="adjustNothing"/>

와 같이 android:windowSoftInputMode="adjustNothing" 한줄을 추가해주면 화면과 키보드간 영향을 주지 않는다.
다시말해 키보드가 나와야 할 시점에 키보드가 사라지는 증상이 해결된다. 단 키보드 보임 옵션은 여러가지가 있으며 아래와 같다.

 

 

adjustPan

소프트 키보드에 의해 EditText 가 가려지지 않도록 위쪽으로 이동.

하단 그림과 같이 위, 아래가 잘리게 된다.

 

    



adjustResize

소프트 키보드가 보이도록 공간을 확보하기 위해 activity window 을 resize 한다.

하단 그림과 같이 위, 아래 모두 표시된다.

 

    



adjustUnspecified

시스템이 상황에 맞게 'adjustPan' or 'adjustResize' 를 결정한다.

소프트 키보드의 기본 값이다.



adjustNothing

Layout 에 어떤 영향도 주지 않고 소프트 키보드가 올라온다.

하단 그림과 같이 EditText 까지 가릴 수 있다.

 

   



stateHidden

Acitivty 실행 시 키보드가 자동으로 올라오지 않는다.



stateAlwaysHidden

Acitivty 실행 시 항상 키보드가 자동으로 올라오지 않는다.

액티비티 이동 포함



stateVisible

Acitivty 실행 시 키보드가 자동으로 올라 온다. 

EditText에 포커스 맞춰짐



stateAlwaysVisible

Acitivty 실행 시 항상 키보드가 자동으로 올라 온다.

EditText에 포커스 맞춰짐, 액티비티 이동 포함



stateUnchanged

키보드를 마지막 설정 상태로 유지 한다.



stateUnspecified

시스템이 적절한 키보드를 상태를 설정해 주거나 테마에 따라 설정 해준다.

소프트 키보드 상태의 기본 값이다.

 

 

추가로. AndroidManifest.xml이 아닌 자바 소스코드에서 위와 같은 옵션을 주기위해서는 다음과 같이 하여도 된다.

 

public class WebviewAct extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
    }
}

 

 

Ref

Comments