2017-09-06 17 views
0

나는 서비스를 사용하여 나의 응용을 위해 팝업 헤드 팝업을 구현했다. 그리고 그 안에 편집 텍스트를 사용했습니다.편집 텍스트로 채팅 헤드 종류 팝업. 그러나 키패드가 안쪽을 클릭했을 때 올라 오지 않는다.

그러나 문제는 편집 텍스트를 클릭 할 때 커서 만 보이고 키보드가 오지 않는다는 것입니다. 심지어 편집 텍스트 안에 텍스트를 붙여 넣거나 복사 할 수도 없습니다. 어떤 도움이 필요합니까? 감사합니다

+0

일부 코드를 게시 할 수 있습니까? –

답변

0

내 문제에 대한 해결책을 찾았습니다.

나는 다음과 같은 코드 이전에 사용하던 : -

전역 변수 : -

private WindowManager mWindowManager; 
WindowManager.LayoutParams params; 

그런 다음 서비스에서 onCreate에

mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 


    //Add the view to the window. 
    params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.WRAP_CONTENT, 
      WindowManager.LayoutParams.TYPE_PHONE, 
      WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
      PixelFormat.TRANSLUCENT); 

문제 FLAG_NOT_TOUCH_MODAL를 사용 FLAG_NOT_FOCUSABLE로했다 대신

하지만 이제는 플로팅 뷰를 사용하여 키보드를 가져올 수 있지만 키패드가 다른 앱에 제공되지 않았지만 다시 버튼이 작동하지 않는 문제가있었습니다.

그래서이 문제를 해결하려면 플로팅 UI에서 버튼을 사용했습니다.이 버튼은 플로팅 UI에서 키패드를 사용하도록 설정하고 비활성화하여 다시 버튼과 키패드가 다른 앱에서 작동하도록합니다.

나는 같은 위해 다음 코드를 사용 : - 키패드가 작동을 시작,이 메소드에 전달됩니다

private void enableKeyPadInput(Boolean enable) { 
    mWindowManager.removeViewImmediate(mFloatingView); 

    if (enable) { 
     params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 
       PixelFormat.TRANSLUCENT); 
    } else { 
     params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
       PixelFormat.TRANSLUCENT); 
    } 

    mWindowManager.addView(mFloatingView, params); 
} 

true의 경우. false가 전달되면 다른 앱이 작동하기 시작합니다.

이것은 문제의 일시적인 해결책입니다. 이보다 더 좋은 같은 것을 성취 할 수있는 다른 방법이 있습니까?