23

スナックバーを使用するように現在のアプリを更新しています。Google の仕様では、さまざまな使用方法が示されていますhttp://www.google.com/design/spec/components/snackbars-toasts.html#snackbars-toasts-specs

例 A:

余裕のあるスナックバー

例 B:

レイアウトに固定されたスナックバー

これが私のコードatmです:

Snackbar snackbar = Snackbar.make(mParentLayout, displayMessage,     
    Snackbar.LENGTH_LONG);
    snackbar.setAction(actionMessage, mClickListener);
    snackbar.show();

例 B の結果が得られます。

マージンを追加するにはどうすればよいですか?

4

18 に答える 18

27

Saeid の回答に加えて、デフォルトの SnackBar レイアウト パラメータを取得し、必要に応じて変更できます。

public static void displaySnackBarWithBottomMargin(Snackbar snackbar, int sideMargin, int marginBottom) {
    final View snackBarView = snackbar.getView();
    final CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) snackBarView.getLayoutParams();

    params.setMargins(params.leftMargin + sideMargin,
                params.topMargin,
                params.rightMargin + sideMargin,
                params.bottomMargin + marginBottom);

    snackBarView.setLayoutParams(params);
    snackbar.show();
}
于 2016-01-17T22:43:49.997 に答える
3

これを試して:

Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "message", Snackbar.LENGTH_LONG);

View snackBarView = snackbar.getView();
            LayoutParams params = new LayoutParams(
LayoutParams.WRAP_CONTENT,      
LayoutParams.WRAP_CONTENT);

params.setMargins(left, top, right, bottom);

snackBarView.setLayoutParams(params);

snackbar.show();
于 2015-11-28T08:18:51.430 に答える
3

Snackbar の表示を制御する鍵は、android.support.design.widget.CoordinatorLayoutレイアウトを使用することです。これがないと、Snackbar は常に小さいデバイスでは下部に表示され、大きいデバイスでは左下に表示されます。注:をレイアウトCoordinatorLayoutのルートとして、ViewGroupまたはレイアウト ツリー構造のどこでも使用できます。

追加したらCoordinatorLayout、Snackbar.make() コマンドの最初の引数として (または子) を渡していることを確認してください。

パディングまたはマージンを追加するCoordinatorLayoutことで、位置を制御し、Snackbar を画面の下部から移動できます。

マテリアル デザイン ガイドラインでは、スナックバーの最小幅と最大幅を指定しています。小さいデバイスでは画面の幅いっぱいに表示されますが、タブレットではスナックバーが最大幅に達し、画面の幅いっぱいに表示されません。

于 2015-07-24T00:46:44.423 に答える