UFO ET IT

키보드 위에 Android SnackBar를 표시 하시겠습니까?

ufoet 2020. 12. 30. 08:30
반응형

키보드 위에 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);

다음 작업 :

  1. 을 호출하는 활동 / 조각 SnackbarScrolView.
  2. 스낵바보기를 findViewById(android.R.id.content)다음으로 설정해야합니다 .

Snackbar.make(getActivity().findViewById(android.R.id.content), "hello world").show();

  1. 또는를 스 와이프 할 수 Snackbar있도록하려면 ScrolViewCoordinatorLayout.

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

반응형