Add LENGTH_INDEFINITE to Snackbar
BUG: 21802300
Change-Id: Id7b519b0ea08760dea12d1f1b1bb3fcf202b4c6e
diff --git a/design/api/current.txt b/design/api/current.txt
index 9dc6e20..e630e17 100644
--- a/design/api/current.txt
+++ b/design/api/current.txt
@@ -229,6 +229,7 @@
method public android.support.design.widget.Snackbar setText(java.lang.CharSequence);
method public android.support.design.widget.Snackbar setText(int);
method public void show();
+ field public static final int LENGTH_INDEFINITE = -2; // 0xfffffffe
field public static final int LENGTH_LONG = 0; // 0x0
field public static final int LENGTH_SHORT = -1; // 0xffffffff
}
diff --git a/design/src/android/support/design/widget/Snackbar.java b/design/src/android/support/design/widget/Snackbar.java
index f3df4f9..83888ce 100644
--- a/design/src/android/support/design/widget/Snackbar.java
+++ b/design/src/android/support/design/widget/Snackbar.java
@@ -95,11 +95,19 @@
/**
* @hide
*/
- @IntDef({LENGTH_SHORT, LENGTH_LONG})
+ @IntDef({LENGTH_INDEFINITE, LENGTH_SHORT, LENGTH_LONG})
@Retention(RetentionPolicy.SOURCE)
public @interface Duration {}
/**
+ * Show the Snackbar indefinitely. This means that the Snackbar will be displayed from the time
+ * that is {@link #show() shown} until either it is dismissed, or another Snackbar is shown.
+ *
+ * @see #setDuration
+ */
+ public static final int LENGTH_INDEFINITE = -2;
+
+ /**
* Show the Snackbar for a short period of time.
*
* @see #setDuration
diff --git a/design/src/android/support/design/widget/SnackbarManager.java b/design/src/android/support/design/widget/SnackbarManager.java
index c6b8f18..c4c54a2 100644
--- a/design/src/android/support/design/widget/SnackbarManager.java
+++ b/design/src/android/support/design/widget/SnackbarManager.java
@@ -200,6 +200,11 @@
}
private void scheduleTimeoutLocked(SnackbarRecord r) {
+ if (r.duration == Snackbar.LENGTH_INDEFINITE) {
+ // If we're set to indefinite, we don't want to set a timeout
+ return;
+ }
+
int durationMs = LONG_DURATION_MS;
if (r.duration > 0) {
durationMs = r.duration;