[AndroidStudio]フローティングアクションボタン | 徒然雑記録

徒然雑記録

中3息子と小6娘を持つママです
週二回パートに出てるけど基本家に引きこもってますw
日常生活であった事をメモのごとく書いています

こどもの影響で見始めた鬼滅の刃にハマり落ちました…

MMDとXISMOを始めました☆

●フローティングアクションボタン

・PaletteのButtonsにある「FloatingAction...」でレイアウトに追加できる

・右下配置にしたい場合は、「RelativeLayout」にして、以下の設定を追加

 ※LinearLayoutで入れ子にすると、Click効かなくなる

 
 android:layout_alignParentRight="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>

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);
    }
});

元のFragementに戻ってくるボタンに書く場合は

 

Navigation.findNavController(v).popBackStack();

Fragement移動時に引数渡したい場合、「Safe Args」というGradleプラグインを使用するっぽい

 

 

※ここからまたあとで追記する