Android Snackbar をキーボードの上に表示することは可能ですか(レイヤーではなくY座標のように)?キーボードが表示されている場合、スナックバーは現在非表示になりますが、これは望ましくない動作です。
セット
Android:windowSoftInputMode="adjustResize"
の中に AndroidManifest.xml
スナックバーを含むアクティビティ
Snackbar
が表示されている場合、キーボードを非表示にできます。
InputMethodManager imm = (InputMethodManager)activity.getSystemService(Activity.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
ScrollViewでレイアウトをネストすると、スナックバーがキーボードの上部に表示されます。これは、キーボード上の使用可能なスペースのみを占めるようにビューのサイズが変更されるためです。そしてもちろん、必要に応じて、キーボードが表示されているかどうかに関係なく、ビューはいつでもスクロール可能です。
このような問題を解決しました:
クラスの作成:
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);
次の作品:
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();
これは私のスナックバーのコードであり、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();