mirror of
https://github.com/material-components/material-components-android.git
synced 2026-02-20 08:39:55 +08:00
am 494333e7: am 2b7796be: am f833f728: am c0b8bcbb: Merge "Add a Callback to Snackbar" into lmp-mr1-ub-dev
* commit '494333e7fd20ed4400fcb716399fe58316c8f0f9': Add a Callback to Snackbar GitOrigin-RevId=6aa1fe9076fcbcb1ef909f6b89439094c1917dd9 PiperOrigin-RevId: 140548725
This commit is contained in:
parent
868ae2938c
commit
fe0feddf23
@ -219,6 +219,7 @@ package android.support.design.widget {
|
||||
method public android.support.design.widget.Snackbar setAction(java.lang.CharSequence, android.view.View.OnClickListener);
|
||||
method public android.support.design.widget.Snackbar setActionTextColor(android.content.res.ColorStateList);
|
||||
method public android.support.design.widget.Snackbar setActionTextColor(int);
|
||||
method public void setCallback(android.support.design.widget.Snackbar.Callback);
|
||||
method public android.support.design.widget.Snackbar setDuration(int);
|
||||
method public android.support.design.widget.Snackbar setText(java.lang.CharSequence);
|
||||
method public android.support.design.widget.Snackbar setText(int);
|
||||
@ -227,6 +228,12 @@ package android.support.design.widget {
|
||||
field public static final int LENGTH_SHORT = -1; // 0xffffffff
|
||||
}
|
||||
|
||||
public static abstract class Snackbar.Callback {
|
||||
ctor public Snackbar.Callback();
|
||||
method public void onDismissed(android.support.design.widget.Snackbar);
|
||||
method public void onShown(android.support.design.widget.Snackbar);
|
||||
}
|
||||
|
||||
public class SwipeDismissBehavior extends android.support.design.widget.CoordinatorLayout.Behavior {
|
||||
ctor public SwipeDismissBehavior();
|
||||
method public int getDragState();
|
||||
|
||||
@ -58,9 +58,40 @@ import static android.support.design.widget.AnimationUtils.FAST_OUT_SLOW_IN_INTE
|
||||
* <p>
|
||||
* Snackbars can contain an action which is set via
|
||||
* {@link #setAction(CharSequence, android.view.View.OnClickListener)}.
|
||||
* <p>
|
||||
* To be notified when a snackbar has been shown or dismissed, you can provide a {@link Callback}
|
||||
* via {@link #setCallback(Callback)}.</p>
|
||||
*/
|
||||
public class Snackbar {
|
||||
|
||||
/**
|
||||
* Callback class for {@link Snackbar} instances.
|
||||
*
|
||||
* @see Snackbar#setCallback(Callback)
|
||||
*/
|
||||
public static abstract class Callback {
|
||||
/**
|
||||
* Called when the given {@link Snackbar} has been dismissed, either through a time-out,
|
||||
* having been manually dismissed, or an action being clicked.
|
||||
*
|
||||
* @param snackbar The snackbar which has been dismissed.
|
||||
* @see Snackbar#dismiss()
|
||||
*/
|
||||
public void onDismissed(Snackbar snackbar) {
|
||||
// empty
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the given {@link Snackbar} is visible.
|
||||
*
|
||||
* @param snackbar The snackbar which is now visible.
|
||||
* @see Snackbar#show()
|
||||
*/
|
||||
public void onShown(Snackbar snackbar) {
|
||||
// empty
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@ -110,6 +141,7 @@ public class Snackbar {
|
||||
private final Context mContext;
|
||||
private final SnackbarLayout mView;
|
||||
private int mDuration;
|
||||
private Callback mCallback;
|
||||
|
||||
Snackbar(ViewGroup parent) {
|
||||
mParent = parent;
|
||||
@ -314,6 +346,13 @@ public class Snackbar {
|
||||
SnackbarManager.getInstance().dismiss(mManagerCallback);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a callback to be called when this the visibility of this {@link Snackbar} changes.
|
||||
*/
|
||||
public void setCallback(Callback callback) {
|
||||
mCallback = callback;
|
||||
}
|
||||
|
||||
private final SnackbarManager.Callback mManagerCallback = new SnackbarManager.Callback() {
|
||||
@Override
|
||||
public void show() {
|
||||
@ -394,6 +433,9 @@ public class Snackbar {
|
||||
|
||||
@Override
|
||||
public void onAnimationEnd(View view) {
|
||||
if (mCallback != null) {
|
||||
mCallback.onShown(Snackbar.this);
|
||||
}
|
||||
SnackbarManager.getInstance().onShown(mManagerCallback);
|
||||
}
|
||||
}).start();
|
||||
@ -404,6 +446,9 @@ public class Snackbar {
|
||||
anim.setAnimationListener(new Animation.AnimationListener() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animation animation) {
|
||||
if (mCallback != null) {
|
||||
mCallback.onShown(Snackbar.this);
|
||||
}
|
||||
SnackbarManager.getInstance().onShown(mManagerCallback);
|
||||
}
|
||||
|
||||
@ -464,7 +509,11 @@ public class Snackbar {
|
||||
private void onViewHidden() {
|
||||
// First remove the view from the parent
|
||||
mParent.removeView(mView);
|
||||
// Now, tell the SnackbarManager that it has been dismissed
|
||||
// Now call the dismiss listener (if available)
|
||||
if (mCallback != null) {
|
||||
mCallback.onDismissed(this);
|
||||
}
|
||||
// Finally, tell the SnackbarManager that it has been dismissed
|
||||
SnackbarManager.getInstance().onDismissed(mManagerCallback);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user