iOS & Android

안드로이드 WebView focus 문제

_침묵_ 2011. 4. 14. 16:11

WebView를 사용하는데, 페이지 내에 Input이나 TextField가 있는 경우에 focus를 줘도 키보드가 보여지지 않는 현상이 발생한다.

우선 다음 방법으로 focus를 받을 수 있게 하고, SetOnClickListener()로 기존에걸 덮어버렸다. 원래 WebView에 OnClickListener가 달려있는지는 확실하지 않지만, 아무것도 없는 OnClickListener를 설정하여 해결되는 것을 보면, 원래 WebView에 달리는 OnClickListener (혹은 Click 관련 listener들)에서 focus 연관된 -못된- 작업을 하고 있지 않을까 생각해볼 수 있다.

webView.setFocusable(true);
webView.setFocusableInTouchMode(true);
webView.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // do nothing
    }
});

하지만, setOnClickListener()로 덮어버리면 원래 잘 하고 있던 작업도 무시하게 되므로 -뭐가 있는지도 모르면서...- 괜히 찝찝하다.

팀원이 찾아준 다음 방법이 focus 처리를 강제로 해주고, 원래 있을지도 모르는 OnClickListener의 작업도 방해하지 않으니 현재 상황에서 선방하는 해결책이 아닐까 싶다.

webview.requestFocus(View.FOCUS_DOWN);
webview.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
            case MotionEvent.ACTION_UP:
                if (!v.hasFocus()) {
                    v.requestFocus();
                }
                break;
        }
        return false;
    }
});