program tip

대화 용 소프트 키보드 표시

radiobox 2020. 11. 10. 08:00
반응형

대화 용 소프트 키보드 표시


편집 텍스트보기가있는 대화 상자를 표시하고 있습니다. 그러나 소프트 키보드는 사용자가 편집보기 내부를 누르는 경우에만 열립니다. 그래서 다음 코드로 InputMethodManager를 호출 해 보았습니다.

InputMethodManager imm =
 (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(dialogField,0);

dialogField는 입력 필드입니다. 하지만 정확히 언제해야합니까? 대화 상자의 onStart () 메서드에서 시도했지만 아무 일도 일어나지 않습니다. 또한 전에 dialogField에 대한 포커스를 요청했지만 아무것도 변경되지 않았습니다.

나는 또한이 코드를 시도했다

dialogField.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
    public void onFocusChange (View v, boolean hasFocus)
    {
        if (hasFocus)
        {
            Main.log("here");
            dialogInput.getWindow().setSoftInputMode(
              WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
            /*
                InputMethodManager mgr =
                  (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                mgr.showSoftInput(dialogField,0);
            */
        }
    }
});

두 버전 모두. 그러나 소프트 키보드는 나타나지 않습니다. Main.log는 함수가 실제로 호출되었음을 보여주는 로그 일뿐입니다. 그리고 네, 불립니다.

대화 상자가 열리기 전에 SHOW_FORCED 플래그가있는 키보드를 가져올 수 있습니다. 그러나 종료시 닫히지 않습니다. 대화를 표시하기 전에 만 할 수 있습니다. 콜백 내에서도 작동하지 않습니다.


굉장한 질문, 나도 그렇게하려고 노력했고 해결책을 찾았습니다.

대화 작성기 클래스 AlertDialog.Builder사용하여 다음 과 같은 대화 상자를 호출해야합니다.

AlertDialog.Builder builder = new AlertDialog.Builder();
AlertDialog dialog;

builder.set...

dialog = builder.create();
dialog.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
dialog.show();

이것은 나를 위해 잘 작동했습니다.

참고 : import android.view.WindowManager.LayoutParams;거기에 상수 값 을 입력해야합니다 .


 AlertDialog dialog = new AlertDialog.Builder(this).create();
    dialog.show();
    Window window = dialog.getWindow();
    window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
    window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

불가능 해 보인다.

그래서 Dialog 대신 새로운 Activity를 만들어서 사용자가 편집 할 수 있도록했습니다. 활동에서 매니페스트 파일에서 키보드 모드를 설정할 수 있습니다. 활동이 열릴 때 표시하도록 설정했습니다.

또한 하드 키를 사용하여 에뮬레이터에서 테스트해도 SHOW_IMPLICIT 또는 0 플래그에 대한 키보드가 열리지 않습니다.

참고 URL : https://stackoverflow.com/questions/4258623/show-soft-keyboard-for-dialog

반응형