我对DrawerLayout的了解

最近几天看了下Drawerlayout,细看了一下它的布局,可以大致分为三个小布局,一个是ToolBar,第一个是顶端的菜单栏,第二个是主布局,第三个就是侧滑菜单栏,先把这三个布局做出来后,在用Linearlayout就组合起来可以。

首先先来看ToolBar,代码如下





接下来是主布局,主布局与侧滑菜单栏在同一个xml文件中,代码如下

    

        

                    app:menu="@menu/activity_main_drawer"/>
 
  

    
两个控件被包含在DrawerLayout中,其中include是主布局界面,主布局自己随意定义,写一个hellow也好,navigationView则是侧滑菜单,navigationView中一定要添加layout_gravitry这个属性,不然菜单栏不会画出,start是从左边划出。

navigationView中还有两个app属性,一个是headLayout,主要是侧滑栏的图片部分或是用户头像部分,另一个menu就是侧滑栏的菜单栏部分,根据androidstudio本身提供的框架,图如下,绿色的就是headLayout部分,白色的就是menu部分

我对DrawerLayout的了解_第1张图片

headLayout部分可以自己弄个Imageview搞搞,menu可以自己弄个ListView写些菜单,也可以根据androidstudio提供的框架,创建一个xml文件,根据格式自己改,其实我觉得这种方法很不错,也有navigationView提供的监方法onNavigationItemSelector可以用,挺方便的,源代码如下:



    
        
        
        
        
    

    
        
            
            
        
    



接下来只要用LinearLayout把这两个xml文件组合起来就可以了:



    

    

        

        

    
LinearLayout垂直分布,由上到下,我这里是把主布局跟侧滑栏卸载LinearLayout中,你也可以把他们分开,用两个include合起来就可以了。

之后加上代码,就可以实现侧滑栏的滑动效果:

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
    private DrawerLayout drawerLayout_main;
    private Toolbar toolbar_main;
    private NavigationView navigationView_main;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        setSupportActionBar(toolbar_main);
        ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout_main, toolbar_main, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
            }
        };
        actionBarDrawerToggle.syncState();
        drawerLayout_main.setDrawerListener(actionBarDrawerToggle);
        navigationView_main.setNavigationItemSelectedListener(this);

    }

    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        return false;
    }
    private void init() {
        drawerLayout_main = (DrawerLayout) findViewById(R.id.Drawerlayout_main);
        toolbar_main = (Toolbar) findViewById(R.id.Toolbar_main);
        navigationView_main = (NavigationView) findViewById(R.id.navigation_main);
    }
}
利用ActionBarDrawerToggle把DrawerLayout与Toolbar联系起来,继承onDarwerOpened与onDrawerClosed方法,这样就可以实现滑动功能,并且滑动时ToolBar的箭头会发生旋转。


你可能感兴趣的:(android)