61

ドキュメンテーションから: パラメーター期間 - 定義済みの長さのいずれか: LENGTH_SHORT、LENGTH_LONG、またはミリ秒単位のカスタム期間。しかし、カスタム期間を設定することはできません。

例えば

Snackbar
    .make(parentLayout, "Feed cat?", 8000) // try here
    .setAction("Yes", snackOnClickListener)
    .setActionTextColor(Color.MAGENTA)
    .setDuration(8000) // try here
    .show();

しかし、8 秒ではなく、Snackbar はすぐになくなってしまいました。

4

7 に答える 7

65

Snackbarとの実装に基づいて、SnackbarManagerEugene H の評価を確認できます。これはバグです。からSnackbarManager:

private void scheduleTimeoutLocked(SnackbarRecord r) {
    mHandler.removeCallbacksAndMessages(r);
    mHandler.sendMessageDelayed(Message.obtain(mHandler, MSG_TIMEOUT, r),
            r.duration == Snackbar.LENGTH_LONG
                    ? LONG_DURATION_MS
                    : SHORT_DURATION_MS);
}

したがって、そうでない値はLENGTH_LONG、短期間のスナックバーになります。

私はそれについて問題を提起しました。

編集:リビジョン22.2.1で修正されました。リリースノートはこちら

Android ドキュメントはまだ更新されていませんが、ソース コードにジャンプすると、メソッド setDuration(int duration) のパラメーターが LENGTH_SHORT、LENGTH_LONG、 LENGTH_INDEFINITE 、またはミリ秒単位のカスタム期間のいずれかであることがわかります。

于 2015-05-31T00:27:17.523 に答える
32

最初の期間を LENGTH_INDEFINITE に設定し、その後カスタム期間を設定します。

Snackbar
.make(parentLayout, "Feed cat?", Snackbar.LENGTH_INDEFINITE)
.setAction("Yes", snackOnClickListener)
.setActionTextColor(Color.MAGENTA)
.setDuration(8000)
.show();

編集

期間をミリ秒単位で直接設定できるようになりました。

Snackbar
.make(parentLayout, "Feed cat?", 8000)
.setAction("Yes", snackOnClickListener)
.setActionTextColor(Color.MAGENTA)
.show();
于 2017-05-16T18:54:10.547 に答える
9

以来'com.android.support:design:22.2.1'

スナックバーの期間を設定するLENGTH_INDEFINITEと、スナックバーが閉じられるか、別のスナックバーが表示されるまで、スナックバーが表示されます。

于 2015-08-27T01:03:18.173 に答える