2013-11-14 3 views
8

PhoneGap 기반 응용 프로그램을 개발 중이며 가상 키보드가 나타날 때 높이를 조정하거나 내 웹 뷰의 높이를 조정하는 방법에 대해 많이 살펴 보았습니다. 가상 키보드.Android + PhoneGap : android : windowSoftInputMode가 작동하지 않는 것 같습니다.

android:windowSoftInputMode="adjustResize" 

을 매니페스트에 설정해야한다는 많은 게시물 (stackoverflow 포함)을 발견했으며이를 수행했습니다. 나는 또한 PhoneGap config.xml에 대해

<preference name="android-windowSoftInputMode" value="adjustResize"/> 

설정과 그걸 붙여 넣었다. 나는 또한 'stateVisible | adjustResize'('adjustResize'뿐만 아니라) 두 매개 변수에 결합 된 값을 시도했지만 두 가지 모두 효과가 없다고 생각됩니다. 나도 몰라, 어쩌면 내가 뭔가 잘못하고있다.하지만 당신은 에뮬레이터 (안드로이드 4.0.3에서 스크린 샷을 확인할 수 있지만 4.1.2와 4.2.2도 시도했다.)
http://screencast.com/t/Mm0mw8c693 - 키보드가 보이기
http://screencast.com/t/lZ2DomqeRR - 키보드 숨김
캡쳐 화면에서 내 매니페스트 및 config.xml 설정을 의도적으로 캡처 했으므로 실제로 볼 수 있습니다. 당신이 볼 수있는 바와 같이, 더 뷰포트가 키보드/숨김 표시 할 때 발생하는 크기를 조정하지 http://screencast.com/t/xI9PMcMJxxx

-
난 짧은 비디오를 기록했다. 또한 console.log()를 사용하여 window.innerHeight를 확인했으며 표시되는 키보드와 숨겨진 키보드에서 동일하게 유지됩니다.

제발, 조언 좀 해줘.

+0

이 문제를 해결 했습니까? 그렇다면 솔루션을 게시하고 정답으로 표시하십시오! –

답변

6

windowSoftInputMode="adjustResize" 앱이 전체 화면 모드에있는 경우 (config.xmltruefullscreen 설정) 작동하지 않습니다. 코르도바가 아닌 안드로이드의 문제입니다. the issue CB-4404은 몇 달 동안 Cordova 버그 추적기에 보관되었지만 최근에는 Android 버그 추적기에 it is working as intended이 표시되었습니다.

fullscreenfalse으로 설정하여 문제를 해결했습니다. 내 앱이 전체 화면으로 이동하지 않아도 문제가되지 않았기 때문입니다.

1

이 문제를 해결하고 소프트 키보드를 들었을 때 actionBar가 보이지 않게 스크롤하는 것을 방지하려면 3 가지가 필요했습니다.

android:windowSoftInputMode="adjustResize" 

원래 문제 adjustPan 위 라인에 존재한다는 것이다 :

1)의 AndroidManifest.xml에서 해당 액티비티 I 선을 필요로했다. 처음에는 위의 변경으로 인해 문제가 해결되었습니다.

내가 사용중인 프로젝트는 조각을 사용합니다. onCreateView 방법에서, 다른 단편은 광고했다 :

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

그 선은 불행히도, 애플리케이션 매니페스트에 adjustResize 파라미터를 오버라이드, 그리고 다른 단편을 표시 한 후, I ​​고정 단편 다시 끊었다. 그래서, 새로운 휴식을 고치기 위해서, 나는 2 가지 추가 작업을했습니다.

2) SOFT_INPUT_ADJUST_PAN 행을 다른 단편의 onCreateView 메소드에서 삭제했습니다. 어쨌든 그 행을 필요로하지 않았기 때문입니다.문제를 해결할 항목 2 또는 3 중 하나를 수행 실제로

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 

: I는 주로 관련하고있는 단편의 onCreateView 방법에서는

3), I 라인을 추가했다. 둘 다 철저히 했어.

0

android.manifest에서이 속성을 명시 적으로 "adjustNothing"으로 설정할 수 있습니다. 그러면 "전체 화면"모드를 false로 설정할 필요가 없습니다. 하지만 Android 플랫폼을 업데이트/추가 할 때마다 업데이트해야합니다.