• 以更多的方式呼出NavigationDrawer菜单

    按钮事件
    服务器君一共花费 16.691 ms 进行了 3 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    前面一小节展示了NavigationDrawer的概貌,如果你也建立了这么一个项目例子,那么你也许会问,用户怎么知道还有个菜单潜藏在左侧呢?

    这确实是个问题,当然官方设计的时候,第一次是默认展示左侧的NavigationDrawer菜单的:

    /**
     * Per the design guidelines, you should show the drawer on launch until the user manually
     * expands it. This shared preference tracks this.
     * 按照设计守则,你应该在启动的时候展示抽屉,直到用户手动去展开它。这个变量跟踪这个偏好。
     */
    private static final String PREF_USER_LEARNED_DRAWER = "navigation_drawer_learned";
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	super.onCreate(savedInstanceState);
    
    	// Read in the flag indicating whether or not the user has demonstrated awareness of the
    	// drawer. See PREF_USER_LEARNED_DRAWER for details.
    	// 读入该标志指示用户是否已经显示了抽屉。见PREF_USER_LEARNED_DRAWER了解详细信息。SharedPreferences就是共享偏好。
    	SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
    	mUserLearnedDrawer = sp.getBoolean(PREF_USER_LEARNED_DRAWER, false);
    	
    	if (savedInstanceState != null) {
    		mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
    		mFromSavedInstanceState = true;
    	}
    
    	// Select either the default item (0) or the last selected item.
    	selectItem(mCurrentSelectedPosition);
    }
    

    但是我觉得最好还是得再有个按钮什么的来展开这个菜单,事实上也不难,NavigationDrawerFragment.java 里面就自带了很多很实用的函数,直接拿过来用就行了。比如我们在 Action Bar 右侧加一个 menu 字样,当点击menu,菜单就跑出来:

    实现很简单,只要重写 onOptionsItemSelected 这个方法就行了:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	if (mDrawerToggle.onOptionsItemSelected(item)) {
    		return true;
    	}
    
    	if (item.getItemId() == R.id.action_example) {
    		//Toast.makeText(getActivity(), "Example action.", Toast.LENGTH_SHORT).show();
    		mDrawerLayout.openDrawer(mFragmentContainerView);
    		return true;
    	}
    
    	return super.onOptionsItemSelected(item);
    }
    

    当然也可以自己写一个按钮,绑定按钮事件:

    Button button = (Button) findViewById(R.id.btn);
    button.setOnClickListener(new OnClickListener()
    {
    	@Override
    	public void onClick(View v)
    	{
    		// 按钮按下,将抽屉打开
    		mDrawerLayout.openDrawer(mFragmentContainerView);
    	}
    });
    
更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [计算机算法] 从双端队列引出的卡特兰数 3 个条目
  2. [数据结构] 散列表(哈希表) 13 个条目
  3. [软件工程与项目管理] 呈现树的构建 13 个条目
  4. [数据库技术] 数据库范式篇 5 个条目
  5. [智力开发与知识管理] 整体性学习策略 9 个条目
  6. [移动开发] Android Studio里的Gradle 3 个条目
  7. [移动开发] Android View注入框架Butter Knife 3 个条目
  8. [PHP程序设计] 命令式编程范式 6 个条目
  9. [PHP程序设计] fsockopen,curl与file_get_contents 12 个条目
  10. [移动开发] Android SQLite增删查改实例(数据:魔弹之王) 2 个条目
  11. [Python程序设计] urls.py设置技巧 8 个条目
  12. [PHP程序设计] 对输入文件类型的检测 1 个条目
窗口 -- [博客]