0

親の高さと幅が一致する activity_main 内で定義されたナビゲーション コントローラー フラグメントがあります。したがって、フラグメント間を移動すると、画面全体が置き換えられます。ここで、マテリアル カードをロードするフラグメントに移動するとします。そのマテリアル カードには、マテリアル カードの高さと幅を占める独自のナビゲーション コントローラーが必要です。そのため、ナビゲーション コントローラーを使用すると、マテリアル カード ビュー内のフラグメントのみが置き換えられ、親のビューは変更されません。

2 つのナビゲーション ホスト フラグメントを持つ方法はありますか? したがって、1 つを activity_main 内で定義し、次に別の 1 つを子フラグメント内で定義できます。

アクティビティ_メイン:

<androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <fragment
            android:id="@+id/nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:defaultNavHost="true"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toTopOf="@id/barrier"
            app:navGraph="@navigation/base_nav_graph" />

子フラグメント:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_layout"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="600dp"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintEnd_toEndOf="parent">

    <fragment
        android:id="@+id/nav_child_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:navGraph="@navigation/child_nav_graph" />
4

1 に答える 1