Показать 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();
следующие работы:
- убедитесь, что действие / фрагмент, из которого вы вызываете
Snackbar
содержитScrolView
. - убедитесь, что вы установили представление snackbar в
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();