How to Display Navigation Drawer in all activities?

后端 未结 8 1263
刺人心
刺人心 2020-11-27 13:39

I have a Navigation Drawer which should appear in all my activities.

I saw many questions similar to this & found a solution like Extending the Main

8条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-27 14:28

    I had this problem too. This is my implementation:

    activity_main.xml - the child at index 1 in the CoordinatorLayout is the content_main.xml, this I can change in code.

    
    
        
    
            
    
                
    
            
    
            ****
    
            
    
        
    
        
    
    
    

    I've created a class that uses inflates the others activities UI:

    public class MyLayoutInflater {
    
        public void inflate(Activity activity, int LayoutResource, android.app.ActionBar getSupportActionBar, Intent getIntent){
            CoordinatorLayout coordinatorLayout = (CoordinatorLayout) activity.findViewById(R.id.coordinator);
            android.view.LayoutInflater inflater = (android.view.LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View contentView = inflater.inflate(LayoutResource, null, false);
    
            //change i so that it suits the child number in you coordinator layout
            int i = 1;
            coordinatorLayout.removeViewAt(i);
            coordinatorLayout.addView(contentView, i);
            getSupportActionBar.setTitle(actionBarTitle);
        }
    
        public void inflate(Activity activity, int LayoutResource, android.support.v7.app.ActionBar getActionBar, String actionBarTitle){
            CoordinatorLayout coordinatorLayout = (CoordinatorLayout) activity.findViewById(R.id.coordinator);
            android.view.LayoutInflater inflater = (android.view.LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View contentView = inflater.inflate(LayoutResource, null, false);
    
            //change i so that it suits the child number in you coordinator layout
            int i = 1;
            coordinatorLayout.removeViewAt(i);
            coordinatorLayout.addView(contentView, i);
            getActionBar.setTitle(actionBarTitle);
        }
    
    }
    

    Now on the other activities all you have to do is extend the MainActivity and call this method and give it the necessary parameters:

    public class AnotherActivity extends MainActivity {
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            new MyLayoutInflater().inflate(this,R.layout.content_activity_another, getSupportActionBar(), getIntent());
    
        }
    }
    

提交回复
热议问题