programing

Android:소프트 키보드가 내 보기를 위로 밀어 올리는 것을 방지하려면 어떻게 해야 합니까?

megabox 2023. 6. 8. 19:35
반응형

Android:소프트 키보드가 내 보기를 위로 밀어 올리는 것을 방지하려면 어떻게 해야 합니까?

앱 하단에 수직 슬라이딩 드로어가 있습니다.소프트 키보드가 열리면 드로어의 탭이 위로 밀려서 키보드 위에 놓입니다.저는 실제로 키보드가 표시될 때 화면 하단에 숨겨져 있기를 원합니다.

이 문제에 부딪힌 사람이 또 있습니까?어떻게 고치는지 아세요?

활동을 간단히 전환할 수 있습니다.windowSoftInputMode에 깃발을 내미는.adjustPan의 신의에AndroidMainfest.xml작업 태그 안에 있는 파일입니다.

자세한 내용은 공식 문서를 참조하십시오.

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

용기의 크기를 변경하지 않는 경우 높이가 "부모와 일치"로 설정되어 있을 수 있습니다.가능한 경우, 상위 항목을 "내용 랩"으로 설정하거나 상위 항목의 상단과 하단에 제약 조건이 있는 제약 조건 레이아웃으로 설정합니다.

상위 컨테이너는 사용 가능한 공간에 맞게 축소되므로 콘텐츠가 스크롤 보기 안에 있어야 합니다(전화 제조업체 및 선택한 레이아웃에 따라...).

  1. 콘텐츠를 함께 부수는 중
  2. 화면에 콘텐츠가 매달려 있습니다.
  3. 콘텐츠가 키보드 아래에 있기 때문에 액세스할 수 없습니다.

레이아웃이 상대적이거나 제약 조건 레이아웃인 경우에도 내용은 문제 1-3을 나타낼 수 있습니다.

어떤 대답도 나에게 효과가 없었지만, 이것은 속임수를 썼습니다. 이 속성을 추가합니다.activity의 태신그에 .AndroidManifest.xml:

<activity
     ...
   android:windowSoftInputMode="adjustNothing"> 
</activity>

저의 경우, 버튼이 올라간 이유는 그 위의 뷰가ScrollView그리고 그것은 어떤 값을 가지든 키보드 위로 버튼을 밀어올린 채 무너졌습니다.android:windowSoftInputMode세팅하고 있었어요.

것을 수 . 설 을 통 해 행 밀 아 는 것 리 방 있 수 었 습 다 니 할 지 을 이 정 래 맨 의 튼 버 소 해 의 프 에 드 트 키 보 ▁setting ▁getting ▁by ▁i ▁my 설 ▁of ▁by ▁up ▁keyboard ▁to 정 ▁soft ▁was다 ▁pushed 습 었 있 니 ▁able ▁avoid ▁rowandroid:isScrollContainer="false"에서.ScrollView단추 위에 있는 것.

속성은 를 다음코입이동수추있가다습니적할로속에 동적으로할 수 .onCreate활동 방법:

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

제겐 효과가 있었지만, 그것은:

android:windowSoftInputMode="adjustPan"

하지 않았습니다.

여기 있는 이 대답들은 저에게 도움이 되지 않았습니다.그래서 시도해봤습니다.

android:windowSoftInputMode="adjustResize"

이것은 매력적으로 작동했고, 이제 내 앱의 헤더가 사라지지 않습니다.더 매끈해요.

단편에서 프로그래밍 방식으로 이 작업을 수행하려면 다음 코드를 사용할 수 있습니다.

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

이것을 다시 시작()에 저장합니다.

가 있었어 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

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

한 줄만 추가하면 됩니다...

더하다android:windowSoftInputMode="stateHidden|adjustPan"의 신의필활서에동한의 에서.manifest file.

저는 방금 해결했습니다 :) :)

미래의 독자들을 위해.

저는 이 문제에 대한 구체적인 통제를 원했기 때문에 다음과 같이 했습니다.

조각이나 활동에서 키보드가 있는 동안 필요하지 않은 다른 보기를 숨긴 다음 복원하여 이 문제를 해결합니다.

            rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    Rect r = new Rect();
                    rootView.getWindowVisibleDisplayFrame(r);
                    int heightDiff = rootView.getRootView().getHeight() - (r.bottom - r.top);

                    if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
                    //ok now we know the keyboard is up...
                        view_one.setVisibility(View.GONE);
                        view_two.setVisibility(View.GONE);

                    }else{
                    //ok now we know the keyboard is down...
                        view_one.setVisibility(View.VISIBLE);
                        view_two.setVisibility(View.VISIBLE);

                    }
                }
            });

지금까지는 키보드로 계속 숨겨져 있는 textView 아래에 버튼과 textInput 필드(병렬)가 있기 때문에 답변이 도움이 되지 않았지만, 이로 인해 문제가 해결되었습니다.

android:windowSoftInputMode="adjustResize"

Xamarin 사용자의 경우 이 코드를 MainActivity 클래스의 Activity 속성에 추가합니다.

WindowSoftInputMode =Android.Views.SoftInput.AdjustNothing

또는 이 코드를 추가할 수 있습니다.Window.SetSoftInputMode(Android.Views.SoftInput.AdjustNothing)기본 활동 클래스의 OnCreate 메서드로 이동합니다.

이것은 나에게 가장 효과적인 것이었습니다.

android:windowSoftInputMode="adjustNothing"

해보세요!

매니페스트 파일의 '활동'에 다음 코드를 추가합니다.

android:windowSoftInputMode="adjustResize"
android:windowSoftInputMode="stateHidden|adjustNothing"

이 코드는 작동합니다.

글쎄요, 저는 이 답변들을 지켜봤지만, 저의 경우에도 같은 문제에 빠졌고 xml 파일에 있는 Scrollview 태그에 매우 작은 무고한 속성을 포함하는 매우 편리하고 쉬운 해결책을 통해 피난했습니다.그것은

android:isScrollContainer="false"

행운을 빕니다.

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

이것은 나에게 효과가 있습니다.

다음을 추가하여 문제를 해결했습니다.

 android:windowSoftInputMode="adjustNothing" 

매니페스트 파일에 추가합니다.

Recyclerviews 제약 조건을 ScrollContainer에서 false로 설정합니다.

android:isScrollContainer="false"

사용해 보십시오.

android:windowSoftInputMode="stateHidden|adjustPan"

스크롤 뷰의 경우:

▁adding를 추가한 android:windowSoftInputMode="stateHidden|adjustPan"Android 매니페스트에서 여전히 작동하지 않습니다.

키보드가 나타날 때 스크롤 보기가 되고 버튼/객체가 스크롤 보기에 없으면 개체가 키보드를 따라 위치를 이동하기 때문에 영향을 받을 수 있습니다.

버튼이 어디에 있는지 xml을 확인하고 스크롤 보기 브래킷 아래에 있는지 확인합니다.

이것이 도움이 되길 바랍니다. :D

저의 경우, 저는 숨겨진 상태를 유지하기 위해 키보드가 필요했고 버튼을 클릭한 후 바로 레이아웃을 조정해야 했습니다. 그래서 저는 이 명령을 매니페스트에 추가했고 그것은 매우 정확해졌습니다.

android:windowSoftInputMode="stateHidden|adjustResize"

키보드를 열 때 보기를 숨기려는 경우.

매니페스트 파일의 활동에 추가

android:windowSoftInputMode="stateHidden|adjustPan"

아무 것도 안 통했어요, 이걸로 해보세요.

 private void scrollingWhileKeyboard() {
    drawerlayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {

            Rect r = new Rect();
            try {
                drawerlayout.getWindowVisibleDisplayFrame(r);
                int screenHeight = drawerlayout.getRootView().getHeight();
                int keypadHeight = screenHeight - r.bottom;
                if (keypadHeight > screenHeight * 0.15) {
                    tabLayout.setVisibility(View.GONE);
                } else {
                    tabLayout.setVisibility(View.VISIBLE);
                }
            } catch (NullPointerException e) {

            }
        }
    });

}

저는 이 문제로 한동안 어려움을 겪었습니다.해결책 중 일부는 효과가 있었지만 제 견해 중 일부는 여전히 추진되고 있지만 다른 것들은 그렇지 않았습니다.그래서 그것이 제 문제를 완전히 해결하지는 못했습니다.결국, 그 일은 활동 태그에 있는 내 매니페스트에 다음 줄의 코드를 추가하는 것이었습니다.

android:windowSoftInputMode="stateHidden|adjustPan|adjustResize"

행운을 빌어요

활동의 기본 창은 소프트 키보드를 위한 공간으로 크기가 조정되지 않습니다.창 내용이 자동으로 이동되어 현재 포커스가 키보드에 의해 가려지지 않고 사용자가 항상 입력하는 내용을 볼 수 있습니다.

android:windowSoftInputMode="adjustPan"

이것이 당신이 원하는 것에 대한 더 나은 해결책일 수 있습니다.

이 코드가 도움이 될 수 있습니다.에서 사용합니다.oncreate방법.

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

표시할 활동에 매니페스트 파일을 포함합니다.그러나 전체 화면 활동을 사용하지 않아야 합니다.

android:windowSoftInputMode="adjustPan"

@당신의 활동에 영향을 주는 것:

android:windowSoftInputMode="stateAlwaysHidden|adjustPan"

이 문제를 해결하는 두 가지 방법이 있습니다.AndroidManifist.xml로 이동하여 활동 이름에 다음 행을 추가합니다.

   android:windowSoftInputMode="adjustPan"

아래 코드와 같이 등록 활동에 추가하였습니다.

 <activity android:name=".Register"
            android:windowSoftInputMode="adjustPan">

두 번째 방법으로 활동으로 이동하고 onCreate 메서드에서 이 코드를 추가합니다.

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

언급URL : https://stackoverflow.com/questions/4207880/android-how-do-i-prevent-the-soft-keyboard-from-pushing-my-view-up

반응형