키보드 위에 Android SnackBar를 표시 하시겠습니까?
키보드 위에 Android Snackbar 를 표시 할 수 있습니까 (레이어링이 아닌 Y 좌표)? Snackbar는 현재 키보드가 표시되면 숨겨지며 이는 바람직하지 않은 동작입니다.
세트
android:windowSoftInputMode="adjustResize"
의 AndroidManifest.xml
활동에 대한 당신의 플로팅 작업을 포함
ScrollView에 레이아웃을 중첩하면 스낵바가 키보드 상단에 나타납니다. 키보드 위의 사용 가능한 공간 만 차지하도록보기 크기가 조정되기 때문입니다. 물론 키보드가 표시되거나 표시되지 않는 동안 필요한 경우 언제든지 View를 스크롤 할 수 있습니다.
가 표시되면 키보드를 숨길 수 있습니다 Snackbar
.
InputMethodManager imm = (InputMethodManager)activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
다음 작업 :
- 을 호출하는 활동 / 조각
Snackbar
에ScrolView
. - 스낵바보기를
findViewById(android.R.id.content)
다음으로 설정해야합니다 .
Snackbar.make(getActivity().findViewById(android.R.id.content), "hello world").show();
- 또는를 스 와이프 할 수
Snackbar
있도록하려면ScrolView
이CoordinatorLayout
.
Snackbar.make(getActivity().findViewById(android.R.id.my_coordinator_layout), "hello world").show();
다음과 같은 문제를 해결했습니다.
수업 만들기 :
public class ShowSnackBar {
public static void show(Context context, String message, View view) {
InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
Snackbar.make(view, message, Snackbar.LENGTH_SHORT).show();
}
}
애플리케이션의 모든 활동에서이 클래스에 액세스 할 수 있습니다.
용법:
ShowSnackBar.show(LoginOtpActivity.this,"Please enter Email ID /Mobile",linear_container);
이것은 내 코드입니다. 메소드에서보기를 설정할 필요가 없습니다. DecoreView에서 가져올 수 있습니다.
public static void longSnack(final String text) {
hideKeyboard();
Snackbar snackbar = Snackbar.make(context.getWindow().getDecorView(), text, Snackbar.LENGTH_LONG);
snackbar.show();
}
public static void shortSnack(final String text) {
hideKeyboard();
Snackbar snackbar = Snackbar.make(context.getWindow().getDecorView(), text, Snackbar.LENGTH_SHORT);
snackbar.show();
}
private static void hideKeyboard() {
InputMethodManager inputMethodManager = (InputMethodManager)context.getSystemService(Activity.INPUT_METHOD_SERVICE);
if (inputMethodManager != null) {
inputMethodManager.hideSoftInputFromWindow(context.getWindow().getDecorView().getWindowToken(), 0);
}
}
이것은 스낵바에 대한 내 코드이며 relativeLayout이 필요하므로 비슷하게 작동합니다. 내가 전달한 상위 기본 레이아웃 ID입니다.
snackbar=snackbar.make(relativeLayout,"Image is Saved to "+Savedfile.getPath().toString(),Snackbar.LENGTH_INDEFINITE)
.setAction("OK", new OnClickListener() {
@Override
public void onClick(View v) {
snackbar.dismiss();
snackbar=null;
System.gc();
finish();
}
});
snackbar.show();
참조 URL : https://stackoverflow.com/questions/33138433/show-android-snackbar-above-keyboard
'UFO ET IT' 카테고리의 다른 글
사용자가 iOS에서 이미 카메라 액세스를 거부 한 후 사용자에게 카메라 액세스를 요청하는 방법이 있습니까? (0) | 2020.12.30 |
---|---|
docker-compose를 사용하여 mongo 데이터베이스를 어떻게 시드합니까? (0) | 2020.12.30 |
Scheme 또는 일반적으로 사용되는 'thunk'는 무엇입니까? (0) | 2020.12.29 |
Enter 키로 양식 제출 방지 (0) | 2020.12.29 |
파이썬에서 단일 멤버 세트에서 멤버를 추출하는 방법은 무엇입니까? (0) | 2020.12.29 |