안드로이드 소프트 키보드 커버 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.