Skip to main content

Hiding App bar in a particular fragment with Navigation UI

If you are using navigation UI in your application , if you want to hide your app bar (top bar of your app showing navigation icon)  or back navigation arrow in a particular fragment you can do like this in your Mainactivity
class MainActivity : AppCompatActivity() {
  class MainActivity : AppCompatActivity() {
  private lateinit var drawerlayout : DrawerLayout
    private lateinit var navView : NavigationView
    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        drawerlayout = findViewById(R.id.drawer_layout)
        navView = findViewById(R.id.nav_view)
        val navController : NavController = this.findNavController(R.id.navhost)
        NavigationUI.setupActionBarWithNavController(this,navController,drawerlayout)
        NavigationUI.setupWithNavController(navView,navController)
        navController.addOnDestinationChangedListener { _, destination, _ ->  
            if(destination.id==R.id.qaFragment){
                supportActionBar?.hide()
            }
            else{
                supportActionBar?.show()
            }
        }
    }

    override fun onSupportNavigateUp(): Boolean {
        val navController : NavController = findNavController(R.id.navhost)
        return NavigationUI.navigateUp(navController,drawerlayout)
    }
}
In the main activity you have to use OnDestinationChangeListener, in the listener you have to check for destination  fragment for which you want to hide the actionBar and hide it.
navController.addOnDestinationChangedListener { _, destination, _ ->  
            if(destination.id==R.id.qaFragment){
                supportActionBar?.hide()
            }
            else{
                supportActionBar?.show()
            }
        }

Comments

Popular posts

Android Sqlite and ListView Example

This is simple application which insert data into Sqlite database --and shows the data  from the database in a ListView ListView is not used in android Anymore . We use RecyclerView and CardView   in Android RecyclerView Demo is available on the following link http://androidtuts4u.blogspot.in/2017/04/android-recyclerview-example.html RecyclerView with CardView Demo is available on the following link http://androidtuts4u.blogspot.in/2017/09/android-card-view-example.html This  is the first Activity of application which shows data from database in listview. Register here buton will start a Registration Activity. Submit button will add data to database and show it in the ListView of MainActivity. Update can be performed by clicking ListView items.     you can download the source code of this project from  google drive   https://drive.google.com/folderview?id=0BySLpWhqmbbdS0dtT1R2TXdBWEE&usp=sharing click on the abov...

Simple Calculator in Android

You can view new updated simple calculator with ViemModel and LiveData in my new blog    https://androidtuts4u.blogspot.com/2021/10/simple-calculator-with-viewmodel-and.html To create a calculator first  we need to create the layout of the calculator. Layout  is created  using XML file given below <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent" >  <EditText     android:id="@+id/result_id"       android:layout_width="fill_parent"     android:layout_height="120dp"   />  <Button    android:id="@+id/Btn7_id"      android:layout_width="70dp"    android:layout_height="60dp"    android:layout_below="@id/result_id"   ...

Controlling Back button Behavior in Fragment-- kotlin

when user navigates in an application android maintains back stack of destinations . This allows android to go back to previous destination when user clicks back button . some  times we  need to implement our own back button behavior  for best user experience . For example  if we are in a timer based quiz  application . when the user clicks on the back button if we go back to the previous destination without stopping  the counter , it will crash  the application . So first we need to know whether the  user  pressed the back button accidentally or not by  using a dialogue box . If the user want to go back to previous destination  we need to stop the counter and  then go back to the previous destination. We can control the back button hahavior byusing OnBackPressedDispatcher  . This controls how back button events are dispatched to one or more onBackPressedCallback objects . callbacks are added using addCallback methods. e...