Показать Android SnackBar над клавиатурой?

можно ли показать Android Snackbar над клавиатурой (как в координате Y, а не наслоение)? В настоящее время Snackbar скрывается, если отображается клавиатура, что является нежелательным поведением.

5 ответов


Set

android:windowSoftInputMode="adjustResize"

на AndroidManifest.xml для действия, содержащего ваш snackbar


Если вы вложите свой макет в ScrollView, snackbar появится поверх клавиатуры. Это потому, что вид изменится только в свободное пространство над клавиатурой. И, конечно же, ваш вид также будет прокручиваться при необходимости в любое время, пока клавиатура отображается или нет.


Вы можете скрыть клавиатуру, когда Snackbar показано.

InputMethodManager imm = (InputMethodManager)activity.getSystemService(Activity.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0);


Это мой код для snackbar и его работа аналогично+, как вам нужно relativeLayout-это родительский идентификатор основного макета, который я передал.

        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();

следующие работы:

  1. убедитесь, что действие / фрагмент, из которого вы вызываете Snackbar содержит ScrolView.
  2. убедитесь, что вы установили представление snackbar в findViewById(android.R.id.content):

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

  1. или, если вы хотите, чтобы иметь возможность смахнуть Snackbar обеспечить ScrolView вложен в CoordinatorLayout.

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