앱 하단에 세로 슬라이딩 서랍이 있습니다. 소프트 키보드가 열리면 서랍의 탭이 위로 올라가 키보드 위에 있습니다. 실제로 화면 하단에 키보드가 표시되면 숨겨지기를 원합니다.
다른 사람이이 문제를 겪고 있습니까? 문제를 해결하는 방법을 알고 있습니까?
앱 하단에 세로 슬라이딩 서랍이 있습니다. 소프트 키보드가 열리면 서랍의 탭이 위로 올라가 키보드 위에 있습니다. 실제로 화면 하단에 키보드가 표시되면 숨겨지기를 원합니다.
다른 사람이이 문제를 겪고 있습니까? 문제를 해결하는 방법을 알고 있습니까?
답변:
액티비티 태그 내부의 파일 에서 액티비티 windowSoftInputMode
플래그를 간단히 전환 할 수 있습니다 .adjustPan
AndroidMainfest.xml
자세한 내용은 공식 문서 를 확인하십시오 .
<activity
...
android:windowSoftInputMode="adjustPan">
</activity>
어떤 대답도 나를 위해 효과가 없었지만 이것은 트릭을 수행했습니다.
android:windowSoftInputMode="adjustNothing"
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
프로그램이 값을 설정
필자의 경우 버튼이 밀린 이유는 버튼 위의보기가 이었기 때문에 설정 한 ScrollView
값에 관계없이 버튼이 키보드 위로 밀려서 축소되었습니다 android:windowSoftInputMode
.
내가 설정하여 소프트 키보드에 의해 밀려지고 버튼의 내 맨 아래 행을 피할 수 있었다 android:isScrollContainer="false"
상의 ScrollView
버튼 위에 앉아있다.
onCreate
활동 의 메소드에 다음 코드를 넣어서이 속성을 동적으로 추가 할 수 있습니다 .
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
이것은 나를 위해 일했지만, 그것은 :
android:windowSoftInputMode="adjustPan"
하지 않았다.
android:windowSoftInputMode="adjustPan"
AndroidManifest.xml에 추가 했습니까 ?
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
조각에서 " " 를 사용하는 방법은 무엇입니까?
FragmentActivity
)와 컨트롤러에 연결된 일부보기 (보기가에서 확장 됨 RelativeLayout
)가 있습니다. 그래서 controller.getWindow()...
당신이 말한 것처럼 귀찮은 견해에서 . 작품
이 답변은 도움이되지 않았습니다. 그래서 나는 이것을 시도했다 :
android:windowSoftInputMode="adjustResize"
이것은 매력처럼 작동했습니다. 이제 내 앱의 헤더가 사라지지 않습니다. 더 부드럽습니다.
TabLayout
. 가시성을로 설정하면 문제가 사라졌습니다 View.GONE
. 레이아웃을 다시 디자인해야 할 때입니다.
미래의 독자들을 위해.
이 문제에 대한 구체적인 제어를 원했기 때문에 이것이 내가 한 일입니다.
조각 또는 활동에서 다른보기 (키보드가 작동하는 동안 필요하지 않은)를 숨기고 복원 하여이 문제를 해결하십시오.
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);
}
}
});
view.post(Runnable runnable)
하여 설정했습니다. 그것은 나를 위해 큰 것으로 밝혀졌다
매니페스트 파일의 '활동'에 다음 코드를 추가하십시오.
android:windowSoftInputMode="adjustResize"
android:windowSoftInputMode="stateHidden|adjustNothing"
이 코드는 작동합니다.
이것은 나를 위해 일한 최고였습니다
android:windowSoftInputMode="adjustNothing"
시도 해봐!
그들 중 누구도 나를 위해 일하지 않았습니다.
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) {
}
}
});
}
이 코드가 도움이 될 수 있습니다. 당신의 oncreate
방법으로 사용하십시오 .
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
표시하려는 활동에서 매니페스트 파일에 포함하지만 전체 화면 활동을 사용하지 않아야합니다.
android:windowSoftInputMode="adjustPan"