web-dev-qa-db-ja.com

Androidキーボードの上にSnackBarを表示しますか?

Android Snackbar をキーボードの上に表示することは可能ですか(レイヤーではなくY座標のように)?キーボードが表示されている場合、スナックバーは現在非表示になりますが、これは望ましくない動作です。

55
fobbymaster

セット

Android:windowSoftInputMode="adjustResize"

の中に AndroidManifest.xmlスナックバーを含むアクティビティ

75
giorgos.nl

Snackbarが表示されている場合、キーボードを非表示にできます。

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

9
taken2016

ScrollViewでレイアウトをネストすると、スナックバーがキーボードの上部に表示されます。これは、キーボード上の使用可能なスペースのみを占めるようにビューのサイズが変更されるためです。そしてもちろん、必要に応じて、キーボードが表示されているかどうかに関係なく、ビューはいつでもスクロール可能です。

9
Menasheh

このような問題を解決しました:

クラスの作成:

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

1
Nouman Baig

次の作品:

  1. Snackbarを呼び出しているアクティビティ/フラグメントにScrolViewが含まれていることを確認してください。
  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();

1
user7653815

これは私のスナックバーのコードであり、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();
0
Rahul