2016-08-10 8 views
1

TextField에 포커스가있는 동안 (키보드가 보이면) 뒤로 버튼을 잡으려고합니다.LibGDX - 안드로이드 키보드가 보이는 TextField 안의 백 버튼을 잡는 방법?

이미 Multiplexer으로 시도

- 설정 'BackProcessor'단계의 상단에 - 그것은 작동하지 않습니다

if(Gdx.input.isKeyDown(Keys.BACK) 
: 또한

InputProcessor backProcessor = new InputAdapter() { 
     @Override 
     public boolean keyDown(int keycode) { 

      if ((keycode == Input.Keys.BACK)) 
      { 
       Gdx.app.log("INPUT", "BACK"); 
      } 
      return false; 
     } 
    }; 

    InputMultiplexer multiplexer = new InputMultiplexer(backProcessor, 
      loginStage,registerStage); 
    Gdx.input.setInputProcessor(multiplexer); 

, 내가 가진 render 방법으로 시도

너무 작동하지 않습니다.

위의 솔루션은 완벽하게 작동합니다. 예외 키보드가 보이면 그 순간.

달성하려는 목표는 무엇입니까? onScreenKeyboard가 표시 될 때 뒤로 버튼을 잡아야합니다.

편집

또한 TextFieldListener으로 시도했지만 'BACK 버튼은'이이 사로 잡았 될 수있는 '문자 코드'를하지 않은 하나의 키입니다

:

public void keyTyped(TextField textField, char c) 

최종 편집

LibGDX 작성자는 키보드를 볼 때 눌렀을 때 뒤로 버튼이 응용 프로그램 외부에서 처리되므로 정상적인 방법으로이를 검색 할 수있는 방법이 없다고 말했습니다. Android 솔루션은 EditTextonPreKeyIme()을 무시하지만 LibGDX TextField은 Android의 앱과 아무 관련이 없으며 연결되지 않습니다.

이 문제를 해결할 수있는 사람이 있으면 감사드립니다.

답변

0
이 튜토리얼 사용하여 GDX 실행기 클래스를 다시 작성

: 당신이 당신의 dispatchKeyEventPreIme을 무시할 수 있도록 당신이 당신의 RelativeLayout의를해야합니다, 그리고 https://github.com/libgdx/libgdx/wiki/Admob-in-libgdx

()를 그들이 IME로 전송되기 전에 이벤트를 잡을 방법 ;)

RelativeLayout layout = new RelativeLayout(this) { 
      @Override 
      public boolean dispatchKeyEventPreIme(KeyEvent event) { 


       if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) { 
        if(event.getAction() == KeyEvent.ACTION_DOWN){ 
         // back pressed     } 

       } 
       return super.dispatchKeyEventPreIme(event); 
      } 
     }; 
0

대답은 - 불가능합니다.입니다. 키보드가 활성화되어있는 동안 Android는 뒤로 버튼을 잡지 않습니다. 하아. 그들은 소프트 키보드가 보이는지 체크 할 수있는 방법조차 가지고 있지 않으며 탐색 높이/키보드 상태 막대를 탐색 할 수있는 트릭이 있으며 네비게이션/상태 표시 줄과 같은 다른 UI 구성 요소와 충돌하기 때문에 모든 것을 잘못 만든다. 전체 몰입 형 모드.

언젠가 Google Dev가 여기에 표시되기를 바랍니다. Google에서 2016 년에이를 추적하기 때문에 중요한 버그 대신 코드 스타일을 수정하고 있기 때문에 6 년 후이를 수정하는 것이 좋습니다. 최고의 코더들이 여기 있습니다.