안드로이드 소프트 키보드 커버 EditText 필드


답변:


163

소프트 키보드가 열릴 때 보이는 것을 제어하는 ​​방법을 묻고 있습니까? windowSoftInputMode 로 재생할 수 있습니다 . 자세한 내용은 개발자 문서 를 참조하십시오 .


2
이것은 잘 작동하지만 사용자 정의 대화 상자 스타일을 사용하는 경우 대화 상자 스타일에 <item name = "android : windowIsFloating"> true </ item>이 있는지 확인하십시오.
Dmitry Chistyakov

가로 모드 (Nexus 7)에서는 작동하지 않는 것 같습니다. 편집 가능한 요소는 키보드 아래에 숨겨져 있습니다. windowSoftInputMode의 다른 조합을 시도했습니다. ActionBar가 지원하지 않기 때문에 windowIsFloating을 설정할 수없는 것 같습니다. 아니면 내 EditText가 목록보기 항목 안에 있다는 사실과 관련이 있습니까?
Sampo Sarrala-codidact.org

내 항목에 <item name = "android : windowTranslucentStatus"> true </ item>를 추가 한 후에는 작동하지 않습니다. 아무도 고쳐?
Max

1
@Max android:fitsSystemWindows="true"이 문제를 해결하려면 루트보기에 추가하십시오 .
David Passmore

1
소프트 키보드를 사용할 수있을 때 whatsapp에 관계없이 키보드 위의 전체 레이아웃을 가져 오는 것은 어떻습니까?.
Karue Benson Karue

162

나는 같은 문제가 있었다. 다음 코드를 시도하십시오.

android:windowSoftInputMode="adjustPan"

입력을 보유한 활동의 ​​활동 태그에서 manifest.xml에 추가하십시오. 예:

<activity
            android:name=".Activities.InputsActivity"
            ...
            android:windowSoftInputMode="adjustPan"
            />

14
가장 간단한 답변! 참고로 Manifest 파일과 원하는 활동 아래에 추가해야합니다.
NRR

4
필자의 경우, 이것은 적어도 내 HTML을 망쳐 adjustResize놓지 않지만 입력 필드도 포함합니다.
Rahul Dole

8
이것은 나를 도와주지 않았다
vikifor

1
@vikifor, edittext를 scrollview에 추가하십시오. 레이아웃에 3-4 개의 필드 만있는 경우에도 모든 필드를 스크롤보기에 추가하십시오. 가상 키보드가 열릴 때 스크롤 가능합니다.
Kuldeep Sakhiya

잘 작동하지만 EditText보기를 터치 할 때마다 키보드가 다시 그려집니다.
Iqbal

55

소프트 키보드가 화면 하단에있는 EditText보기 위에있는 것과 같은 문제가있었습니다. 내 AndroidManifest.xml 파일의 관련 활동에 단일 행을 추가하여 솔루션을 찾을 수있었습니다.

android:windowSoftInputMode="adjustResize|stateHidden"

전체 활동 태그는 다음과 같습니다.

<activity
        android:name="com.my.MainActivity"
        android:screenOrientation="portrait"
        android:label="@string/title_activity_main"
        android:windowSoftInputMode="adjustResize|stateHidden" >
    </activity>

여기서 가장 중요한 값은 adjustResize입니다. 그러면 전체 UI가 위로 이동하여 소프트 키보드를위한 공간이 제공됩니다.


그러나 CSS에 대부분 백분율 값이 있으면 HTML 모양이 엉망이 될 수 있습니다.
Rahul Dole

여기서 추측 하시나요, 시도 하셨나요? 그러나 그것은 당신의 HTML을 망쳐서는 안됩니다. 나는 웹 뷰로 시도했다. 개별 요소가 아닌 전체보기를 이동시킵니다.
DanKodi

1
나는 그것을 시도했다. 내 CSS에 대부분 백분율 값이 있기 때문에 이런 일이 발생한다고 생각합니다.
Rahul Dole

@ DanKodi 나는 노력했지만 adjustResize|stateHidden아무런 차이가 없었습니다 adjustPan.
IgorGanapolsky

25

스크롤하고 싶은 것을 감싸기 위해 ScrollView를 추가해보십시오. 소프트 키패드를 열 때 대화 상자 위젯 (특히 EditTexts)이 스크롤되는 동안 실제로 스크롤하지 않는 헤더를 그대로 두는 방법은 다음과 같습니다.

<LinearLayout android:id="@+id/HeaderLayout" >
  <!-- Here add a header or whatever will not be scrolled. -->
</LinearLayout>
<ScrollView android:id="@+id/MainForm" >
  <!-- Here add your edittexts or whatever will scroll. -->
</ScrollView>

나는 일반적으로 ScrollView 안에 LinearLayout을 가지고 있지만 그것은 당신에게 달려 있습니다. 또한 스크롤 막대 스타일을 outsideInset으로 설정하면 적어도 내 장치에서 도움이됩니다.


4
Mayra의 답변은 모든 사람이 해야 할 일 (그리고 아마도 Google이 모든 사람이해야한다고 생각한 것)이지만, 거의 매번 내가하는 일입니다. 디스플레이를 올바르게 만드는 데 필요한 실제 제어권을 얻는 유일한 방법입니다. 한숨.
Scott Biggs

Scott의 의견을 과소 평가하지 마십시오. 그건 진실이야. 내 경우에는 목록보기의 크기를 조정하거나 이동하고 싶지 않지만 해당 목록의 끝에서 editText를 사용하고 싶었습니다. 그래서 editText를 scrollView에 넣고 예상대로 작동합니다.
Darpan

15

당신이해야 할 일은

android:isScrollContainer="true"

출처 : http://www.davidwparker.com/2011/08/25/android-fixing-window-resize-and-scrolling/


1
답변 자체가 나에게 많은 도움이되지는 않았지만 (속성이 필요하지 않은) 링크 된 소스에는 완전한 설명이 포함되어 있습니다 (ScrollView에 양식이 포함되어야 함). 감사!
johndodo

마찬가지로, 페이지의 아무것도 도움이되지 않았지만 링크는 활동 windosSoftInputMode에 adjustResize를 추가하는 것으로 나타 났으며 작동했습니다.
스티븐 스미스

14

오래된 스레드를 되살려 서 죄송하지만 android:imeOptions="flagNoFullscreen"EditText 요소에서 언급 한 설정이 없습니다.


7
android:windowSoftInputMode="adjustPan"
android:isScrollContainer="true"

androidEditText에서는 작동하지만 webview 또는 xwalkview에서는 작동하지 않습니다. 소프트 키보드가 webview 또는 xwalkview에서 입력을 숨길 때 사용했습니다android:windowSoftInputMode="adjustResize"


4

선택 방법을 통해 프로그래밍 방식으로 달성 할 수있는 트랙볼을 사용하여 스크롤 할 수 있다고 생각하지만 아이디어 일뿐입니다. 트랙볼 방법이 일반적으로 작동한다는 것을 알고 있지만이를 수행하고 코드에서 작동시키는 정확한 방법은 확실하지 않습니다.
희망이 도움이됩니다.


내가 생각하는 것은 뷰를 스크롤 할 수 있도록 창을 "인공적으로"길게 만드는 방법입니다. 현재 RelativeLayout은 android : layout_width = "wrap_content"android : layout_height = "wrap_content"
Alexis

나는 해결책을 모른다. "wrap_content"가 해결하는 범위까지 확장하여 필요에 맞게 너비 및 높이 값을 수동으로 조정할 수 있습니다.
루이스 미겔 세라노

1

이 단일 행을 키 보드가 활동의 onCreat () 메소드 내부에서 text.inside를 편집하는 상대 활동에 추가하십시오.

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

0

나는 이것이 오래된 것을 알고 있지만 위의 해결책 중 어느 것도 나를 위해 일하지 않았다. 광범위한 디버깅 후 문제를 파악했습니다. 해결책은 android:windowTranslucentStatusstyles.xml에서 속성을 false로 설정하는 것입니다.


0

EditText 필드가 KeyBoard에 의해 포함 된 경우 다음 코드를 사용하십시오.

    EditText= findViewById(R.id.edittext)
    EditText?.getParent()?.requestChildFocus(EditText,EditText)

당신이 원하는 경우 커서 사용보다 집중 글고 치기에 있어야합니다 EditText.requestFocus()EditText?.getParent()?.requestChildFocus(EditText,EditText) 포커스 글고 치기에 초점과 커서를 얻을하는 데 도움.


-1

AndroidManifest.xml 편집

android:windowSoftInputMode="adjustResize"

이것을 레이아웃 파일의 루트 뷰에 추가하십시오.

android:fitsSystemWindows="true"

그게 다야.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.