#概要
Snackbarを画面の下部から出すのではなく、任意の位置から表示させる
#レイアウトファイルでCoordinatorLayoutを入れる
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>
Snackbar
を表示させたいViewをCoordinatorLayout
でラップする
#Snackbarの実装
build.gradle
dependencies {
implementation 'com.google.android.material:material:1.1.0'
}
Snackbar
を使うためにbuild.gradle
にcom.google.android.material
をimplementation
する
※バージョンはよしなに変えてください
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();
}
Snackbar
表示用のメソッドを作成
Snackbar.make
の第一引数を表示させたい位置のViewのidにする(今回はButton
)
ボタンを押した時にボタンのView
の下からSnackbar
を出すようにする
余分な記載が多いし、もうちょっと良い方法があると思うけど備忘録なので一旦これでいいかな。。