소프트 키보드가 표시 될 때 레이아웃을 위로 이동하는 방법 android


85

EditTexts내 레이아웃에 두 개의 로그인 화면과 로그인 버튼이 있습니다. 문제는 입력을 시작하면 소프트 키보드가 표시되고 로그인 버튼을 가린다는 것입니다. 레이아웃이 나타날 때 키보드 위로 또는 위로 레이아웃을 어떻게 밀 수 있습니까?

나는을 사용하고 ScrollView싶지 않고 스크롤하지 않고 구현하고 싶습니다. 제발 그 방법을 알려주세요. 미리 감사드립니다.

답변:


59

windowSoftInputMode속성 설정 adjustPanadjustResize

<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

33
이것은 기본적으로 작동하지 않았지만 작동하도록 변경했습니다 <activity android:windowSoftInputMode="adjustResize"></activity>.
nickiaconis 2014-08-26

2
사용중인 Android 버전을 언급하세요. 일부 답변은 일부 버전에서 완전히 쓸모가 없을 수 있습니다.
Josh

@nickiaconis가 말했듯이, 나는 'adjustPan'매개 변수가 필요하지 않으며 그것은 나를 위해 작동합니다. 감사합니다
danisupr4

Xamarin.Forms 휴대용 프로젝트에 해당하는 항목이 있습니까? 따라서 각 개별 대상 플랫폼에 대해이 작업을 수행 할 필요가 없습니다.
user20358

6
설정은 다음 표에 나열된 값 중 하나이거나 하나의 "상태 ..."값과 하나의 "조정 ..."값의 조합이어야합니다. 예를 들어 여러 "상태 ..."값과 같이 그룹 중 하나에 여러 값을 설정하면 결과가 정의되지 않습니다. developer.android.com/guide/topics/manifest/…
EmJiHash

34

활동에 해당하는 Android 매니페스트 파일에서 이것을 시도하십시오.

<activity android:windowSoftInputMode="adjustPan"> </activity>

1
내 충성심은 처음으로 위로 이동하지만 키보드를 닫고 다시 열 때 움직이지 않습니다.
nabeghe

24

onCreate()방법 에서이 코드를 사용하십시오 .

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

1
감사합니다. <activity android : windowSoftInputMode = "adjustPan"> </ activity>은 어떤 이유로 저에게 작동하지 않았습니다.
DH28

1
이 방법 SOFT_INPUT_ADJUST_RESIZE은 ADJUST_PAN 대신 사용하는 것이 좋습니다.
Voy

16

android:windowSoftInputMode="adjustResize"

매니페스트 파일 내부의 활동 태그에서 트릭을 수행합니다.


ConstraintLayout을 사용하고 있는데이 솔루션이 저에게 적합하지 않습니다.
Karan Sharma

이 답변을 작성할 당시 ConstraintLayout은 Android 레이아웃에 추가되지 않았습니다. 이 스레드에서 가장 적합한 다른 솔루션을 찾으십시오. 그리고 시간이되면 ConstraintLayout에 대한 대답을 업데이트 할 것입니다. 보고 해 주셔서 감사합니다
Bhargav Thanki


10

나는 어떻게 든 장치의 소프트 키보드 상태를 알고 이것을 달성했습니다. 키보드가 표시되면 레이아웃을 y 위치로 이동하고 표시되지 않으면 원래 위치로 다시 이동합니다. 이것은 잘 작동 하며이 지침을 따랐습니다 .


2
키보드가 표시되면 레이아웃을 위로 이동할 수 있지만 키보드가 숨겨져있는 동안 원래 위치로 이동할 수 없습니다. 도움이 필요합니다.
Kishore

9
android:fitsSystemWindows="true"

레이아웃 파일의 기본 레이아웃에 속성을 추가하고

android:windowSoftInputMode="adjustResize"

Activty의 Manifest.xml 파일에 줄을 추가하십시오.

저에게 완벽한 작품입니다.


fitsSystemWindows 키보드와는 아무 상관이 없다

@TimCastelijns, 제 경우에는 (전체 화면 활동) 문제가 있습니다. 로 설정하면 false보기가 위로 이동하지 않습니다.
CoolMind

6

이것을 매니페스트 파일의 활동 선언에 넣으십시오. <activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

또는 원하는 경우 활동의 onCreate () 메소드를 추가 할 수 있습니다.

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

2
매니페스트 코드가 잘못되었습니다. 이런 식으로 동작이 정의되지 않았습니다 (두 개의 충돌 값을 설정했습니다. offdoc : developer.android.com/guide/topics/manifest/… , android:windowSoftInputMode설명 참조). @ kiwicomb123, 하나의 매개 변수를 선택하십시오. 그렇지 않으면 시스템이 자동으로 선택합니다 (이 선택은 다른 장치 / API 버전에서 변경 될 수 있음)
kpower

3

이것이 필요한 전부입니다.

<activity android:windowSoftInputMode="adjustResize"> </activity>

2

가이드 에 따라이를 달성하는 올바른 방법은 매니페스트에서 선언하는 것입니다.

<activity name="EditContactActivity"
        android:windowSoftInputMode="stateVisible|adjustResize">

    </activity>

stateVisible은 활동이 시작될 때 열리게하는 것처럼 보이므로 실제로 키보드를 밀어 올릴 필요가 없습니다.
CodyEngel

2

소프트 키보드가 나타나면 기본 레이아웃의 크기가 변경되며, 필요한 것은 해당 메인 레이아웃에 대한 리스너를 만들고 해당 리스너 내 scrollT0(x,y)에서 스크롤 할 코드 를 추가하는 것입니다.


2

xamarin으로 작업하는 WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize경우 MainActivity 클래스의 활동 특성 에이 코드 를 넣을 수 있습니다 . 예를 들어, 이제 활동 속성은 다음과 같습니다.

    [Activity(WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        //some code here.
    }

1

당신은 사용해야합니다

android:windowSoftInputMode="adjustPan|stateHidden"

당신의 AndroidManifest.xml파일을 어디서 활동을 선언하고 있습니다. 레이아웃에 키보드가 표시 될 때 레이아웃 내용이 조정됩니다.


0

상대 레이아웃을 사용하면 텍스트를 입력하는 동안 해당보기를 볼 수 있도록보기가 조정됩니다.


0

이건 내게 매력처럼 작용 해

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

0

매니페스트에 코드를 추가하여이 문제를 해결합니다.

<activity android:name=".Login"
        android:fitsSystemWindows="true"
        android:windowSoftInputMode="stateHidden|adjustPan"
</activity>

-2

이것은 확실히 당신을 위해 일할 것입니다.

android : windowSoftInputMode = "adjustPan"


1
설명을 추가해 주시겠습니까 ...?
chevybow

다만 당신의 AndroidManifest.xml 파일로 이동하여 키보드 위로 스크롤하려는 활동이 태그는 팝업
산 제이 쿠마
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.