Display Snackbar from any position instead of pulling it out from the bottom of the screen
fragment_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="200dp"
android:gravity="center" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</LinearLayout>
Wrap the View you want to display the Snackbar
with the Coordinator Layout
build.gradle
dependencies {
implementation 'com.google.android.material:material:1.1.0'
}
ʻImplementation`` com.google.android.materialto
build.gradle to use
Snackbar`
MainFragment.java
import com.google.android.material.snackbar.Snackbar;
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
Button button = view.findViewById(R.id.button);
button.setText("button");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showSnackbar("test");
}
});
super.onViewCreated(view, savedInstanceState);
}
private void showSnackbar(String message) {
View view = getView();
if (view == null) return;
Snackbar snackbar = Snackbar.make(view.findViewById(R.id.button), message, Snackbar.LENGTH_SHORT);
snackbar.show();
}
Create a method for displaying Snackbar
Set the first argument of Snackbar.make
to the id of the View at the position you want to display (this time Button
)
Make Snackbar
come out from under the button's View
when the button is pressed
There are a lot of extra descriptions, and I think there is a better way, but it's a memorandum, so I wonder if this is all right. ..