●フローティングアクションボタン
・PaletteのButtonsにある「FloatingAction...」でレイアウトに追加できる
・右下配置にしたい場合は、「RelativeLayout」にして、以下の設定を追加
※LinearLayoutで入れ子にすると、Click効かなくなる
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_alignParentBottom="true"
位置調整は「marginBottom」と「marginRight」でする
●FragementからFragementを遷移する
BottomNavigationが勝手に作ってくれた「navigation」使って遷移させる
追加するFragementを「NewDestination」で追加する
遷移するFragement間を矢印でつなぐと「Action」が作成される
※戻る遷移は「popUpto」で設定できる
※「Code」で見ると赤字のとこが増えてる
<fragment
android:id="@+id/navigation_memo"
android:name="ksapp.buymemo.ui.memo.MemoFragment"
android:label="@string/title_memo"
tools:layout="@layout/fragment_memo" >
<action
android:id="@+id/action_navigation_memo_to_memo2Fragment"
app:destination="@id/navigation_memo2"
app:popUpTo="@id/navigation_memo" />
</fragment>
<fragment
android:id="@+id/navigation_memo2"
android:name="ksapp.buymemo.Memo2Fragment"
android:label="fragment_memo2"
tools:layout="@layout/fragment_memo2" >
</fragment>
android:id="@+id/navigation_memo"
android:name="ksapp.buymemo.ui.memo.MemoFragment"
android:label="@string/title_memo"
tools:layout="@layout/fragment_memo" >
<action
android:id="@+id/action_navigation_memo_to_memo2Fragment"
app:destination="@id/navigation_memo2"
app:popUpTo="@id/navigation_memo" />
</fragment>
<fragment
android:id="@+id/navigation_memo2"
android:name="ksapp.buymemo.Memo2Fragment"
android:label="fragment_memo2"
tools:layout="@layout/fragment_memo2" >
</fragment>
javaファイルにFabボタンクリック時のイベント書く
※findViewByIdでもフローティングアクションボタンを取得できるが、binding.fabで設定する方が楽
※navigateでaction名を指定する
// FloatingActionButton fab = binding.getRoot().findViewById(R.id.fab);
// fab.setOnClickListener(new View.OnClickListener() {
binding.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Navigation.findNavController(v).navigate(R.id.action_navigation_memo_to_memo2Fragment);
}
});
// fab.setOnClickListener(new View.OnClickListener() {
binding.fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Navigation.findNavController(v).navigate(R.id.action_navigation_memo_to_memo2Fragment);
}
});
元のFragementに戻ってくるボタンに書く場合は
Navigation.findNavController(v).popBackStack();
Fragement移動時に引数渡したい場合、「Safe Args」というGradleプラグインを使用するっぽい
※ここからまたあとで追記する