41

Androidのドキュメントにあるように

スナックバーは、操作に関する簡単なフィードバックを提供します。モバイルでは画面の下部に、大型のデバイスでは左下に短いメッセージが表示されます。

snackbars画面の下部ではなく上部に表示できる代替手段はありますか?

現在snackbar、画面の下部に a を表示するこのようなことを行っています。

Snackbar.make(findViewById(android.R.id.content), "Hello this is a snackbar!!!", 
Snackbar.LENGTH_LONG).setAction("Undo", mOnClickListener)
.setActionTextColor(Color.RED)
.show();
4

11 に答える 11

182

これを使用して、スナックバーを画面の上部に表示することができます。

Snackbar snack = Snackbar.make(parentLayout, str, Snackbar.LENGTH_LONG);
View view = snack.getView();
FrameLayout.LayoutParams params =(FrameLayout.LayoutParams)view.getLayoutParams();
params.gravity = Gravity.TOP;
view.setLayoutParams(params);
snack.show();

OPから:

最初の行を変更する必要がありました:

Snackbar snack = Snackbar.make(findViewById(android.R.id.content), "Had a snack at Snackbar", Snackbar.LENGTH_LONG);
于 2015-07-31T12:36:21.837 に答える
48
CoordinatorLayout coordinatorLayout=(CoordinatorLayout)findViewById(R.id.coordinatorLayout);
Snackbar snackbar = Snackbar.make(coordinatorLayout, "Text", Snackbar.LENGTH_LONG);
View view = snackbar.getView();
CoordinatorLayout.LayoutParams params=(CoordinatorLayout.LayoutParams)view.getLayoutParams();
params.gravity = Gravity.TOP;
view.setLayoutParams(params);
snackbar.show();
于 2016-04-21T11:30:47.447 に答える
0

Constraintlayoutasガイドラインの助けを借りてルートの親として使用している場合、CoordinatorLayout これを試すことができます:

以下の例のように、ガイドライン内の layout_constraintGuide_end="Your bottom margin value" の値を変更します。

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:id="@+id/coordinator"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@id/guideline3" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_end="150dp" />

アクティビティでは、スナックバーのビューとして CoordinatorLayout を渡すことができます

mSnackBar = Snackbar.make(
            coordinator,
            getString(R.string.no_internet_connection),
            Snackbar.LENGTH_INDEFINITE
        )
        mSnackBar.show()
于 2021-02-16T14:09:34.870 に答える