J'utilise la navigation par jetpack pour passer d'un fragment à un fragment de détail.
J'ai besoin d'aide pour présenter le fragment de détail sur le fragment qui l'affiche.
Voir la photo ci-dessous pour voir ce que j'essaie d'obtenir :
J'utilise également un fade_in / fade_out de base pour l'entrée et la sortie dans les animations du graphique de navigation.
Voici le résultat que j'obtiens :
Comment puis-je configurer la transition pour que le fragment de détail s'affiche au-dessus de la vue de présentation ?
Voici tous mes progrès :
menu_nav_bas
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/fragment_tab1"
android:title="Tab 1"/>
<item
android:id="@+id/fragment_tab2"
android:title="Tab 2"/>
<item
android:id="@+id/fragment_tab3"
android:title="Tab 3"/>
</menu>
nav_graph
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_graph"
app:startDestination="@id/fragment_tab1">
<fragment android:id="@+id/fragment_tab1" android:name="com.example.navgraphfragmentmodal.Tab1" android:label="fragment_tab1"
tools:layout="@layout/fragment_tab1">
<action android:id="@+id/toModal" app:destination="@id/modalFragment"/>
</fragment>
<fragment android:id="@+id/fragment_tab2" android:name="com.example.navgraphfragmentmodal.Tab2" android:label="fragment_tab2"
tools:layout="@layout/fragment_tab2"/>
<fragment android:id="@+id/fragment_tab3" android:name="com.example.navgraphfragmentmodal.Tab3"
android:label="fragment_tab3" tools:layout="@layout/fragment_tab3"/>
<fragment android:id="@+id/modalFragment" android:name="com.example.navgraphfragmentmodal.ModalFragment"
android:label="fragment_modal" tools:layout="@layout/fragment_modal"/>
</navigation>
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navHostFragment = supportFragmentManager.findFragmentById(R.id.navigation_host_fragment) as NavHostFragment?
NavigationUI.setupWithNavController(bottom_navigation_view, navHostFragment!!.navController)
supportActionBar?.setDisplayShowHomeEnabled(true)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
supportActionBar?.setDisplayShowHomeEnabled(false)
if (item.itemId === android.R.id.home) {
//Title bar back press triggers onBackPressed()
onBackPressed()
return true
}
return super.onOptionsItemSelected(item)
}
//Both navigation bar back press and title bar back press will trigger this method
override fun onBackPressed() {
supportActionBar?.setDisplayShowHomeEnabled(false)
if (supportFragmentManager.backStackEntryCount > 0) {
supportFragmentManager.popBackStack()
} else {
super.onBackPressed()
}
}
}
Fragment Tab1 (C'est le fragment avec l'image de la Tour Eiffel et le bouton)
class Tab1 : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_tab1, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
learnMoreButton.setOnClickListener {
NavHostFragment.findNavController(this).navigate(R.id.modalFragment)
}
}
}
Modification de la prime :
Je cherche à afficher un fragment sur un fragment dans un graphe de navigation, comme on le voit dans l'image de la Tour Eiffel. Dans iOS, cela serait similaire à la présentation : Sur le plein écran. Je le fais. no Je souhaite utiliser un DialogFragment, car j'ai beaucoup plus de contrôle sur l'animation des vues dans un Fragment normal.