资讯专栏INFORMATION COLUMN

Android Navigation Drawer简记

leonardofed / 589人阅读

摘要:简记一段时间没有接触开发,发现多了不少东西。的需要指定的值为。的宽度不能超过,以免滑出后在主视图完全消失不见。在的中加载,设置事件响应等。监听的开闭事件与其他的事件监听一致,只需要在上就可以。这样一来上的图标会对的状态进行正确的响应。

Navigation Drawer简记

一段时间没有接触Android开发,发现多了不少东西。比如这里的navigation drawer,现在已经有官方support library支持了。

现在来了解下怎么开发。

Drawer Layout

要想添加一个navigation drawer,需要在UI布局中将根视图声明为drawer layout。




    
    

    
    
    


在drawer layout中,有两个子视图。

其中,这个Activity的主视图需要出现在drawer视图的上方。因为XML布局中视图的出现顺序与视图在z轴上的顺序有关(也就是说如果是drawer在XML布局文件上方的话,会没法遮挡住主视图)。

Drawer的view需要指定layout_gravity的值为"start"。这是为了照顾一些从从右往左阅读的语言。

Drawer view的宽度不能超过320dp,以免滑出drawer后在主视图完全消失不见。

初始化Drawer View

因为这里的例子是将一个fragment作为Drawer,所以只需要在fragment中对drawer进行需要的设置就行了。

在fragment的onCreateView()中加载view,设置事件响应等。

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    mDrawerListView = (ListView) inflater.inflate(
            R.layout.fragment_navigation_drawer, container, false);
    mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView parent, View view, int position, long id) {
            selectItem(position);
        }
    });
    mDrawerListView.setAdapter(new ArrayAdapter(
            getActionBar().getThemedContext(),
            android.R.layout.simple_list_item_1,
            android.R.id.text1,
            new String[]{
                    getString(R.string.title_section1),
                    getString(R.string.title_section2),
                    getString(R.string.title_section3),
            }));
    mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
    return mDrawerListView;
}
监听Drawer的开闭事件

与其他的事件监听一致,只需要在DrawerLayout上setDrawerListener()就可以。

这个事件可以用来重新设置菜单,因为有时候drawer打开和关闭情况下可用的菜单项是不一样的。

@Override
public void onDrawerClosed(View drawerView) {
    super.onDrawerClosed(drawerView);
    if (!isAdded()) {
        return;
    }

    getActivity().supportInvalidateOptionsMenu(); // calls onPrepareOptionsMenu()
}

当Activity中有action bar时, setDrawerListener()中可以使用ActionBarDrawerToggle类来代替DrawerListener。这样一来action bar上的图标会对drawer的状态进行正确的响应。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12066.html

相关文章

  • Android Fragment简记

    摘要:简记温习的知识。本文更像是对的翻译及简化。生命周期到时调用对做初始化当需要创建时调用当宿主完成了方法时被调用当开始被销毁时调用当可见时调用获取一些昂贵的资源,如位置传感器等释放昂贵资源,提交更改与的交互不应该相互间直接通信,而应通过来进行。 Android Fragment简记温习Android的知识。 本文更像是对CodePath Android Cliffnotes =>...

    elva 评论0 收藏0
  • Android Material Design系列之Navigation Drawer

    摘要:从今天开始,我们讲一个关于风格控件系列的文章。个人认为风格还是非常漂亮和好看的。包含,一设置侧滑菜单栏就形成了。分为两部分,一部分是,一部分是。就是对应菜单的顶部部分,一般用来显示用户信息什么的,则对应实际的菜单选项。 从今天开始,我们讲一个关于Material Design风格控件系列的文章。个人认为Material Design风格还是非常漂亮和好看的。关于Material Des...

    Eidesen 评论0 收藏0
  • Android Material Design系列之Navigation Drawer

    摘要:从今天开始,我们讲一个关于风格控件系列的文章。个人认为风格还是非常漂亮和好看的。包含,一设置侧滑菜单栏就形成了。分为两部分,一部分是,一部分是。就是对应菜单的顶部部分,一般用来显示用户信息什么的,则对应实际的菜单选项。 从今天开始,我们讲一个关于Material Design风格控件系列的文章。个人认为Material Design风格还是非常漂亮和好看的。关于Material Des...

    chemzqm 评论0 收藏0
  • Android Material Design系列之Navigation Drawer

    摘要:从今天开始,我们讲一个关于风格控件系列的文章。个人认为风格还是非常漂亮和好看的。包含,一设置侧滑菜单栏就形成了。分为两部分,一部分是,一部分是。就是对应菜单的顶部部分,一般用来显示用户信息什么的,则对应实际的菜单选项。 从今天开始,我们讲一个关于Material Design风格控件系列的文章。个人认为Material Design风格还是非常漂亮和好看的。关于Material Des...

    stackvoid 评论0 收藏0
  • Android使用ToolBar+DrawerLayout+NavigationView实现侧滑抽屉

    摘要:学会使用学会使用学会使用实现侧滑抽屉效果学会实现在顶部以及被遮挡的两种效果效果展示侧滑控件我们在开发的过程中经常用到废话不多说先上图实现过程如果要实现上图的展示效果需要先创建个类这个类里面包含的初始化然后再创建相关的创建及相关文件初始化 学会使用DrawerLayout 学会使用NavigationView 学会使用ToolBar+DrawerLayout+NavigationView实现...

    dmlllll 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<