NavigationDrawer的使用

一。Create a NavigationDrawer

创建Navigation Drawer需要用DrawerLayout 作为界面根控件。在DrawerLayout里面第一个View为当前界面主内容;第二个和第三个View为Navigation Drawer内容。如果当前界面只需要一个Navigation Drawer,则第三个View可以省略。

下面的例子中,有两个View ,第一个FramLayout是显示内容 的主要页面,第二个ListView 是NavigationDrawer的内容 。

<android.support.v4.widget.DrawerLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id ="@+id/drawer_layout"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
     
    <!-- the main content view  -->
   <FrameLayout 
       android:id ="@+id/content_frame"
       android:layout_width="match_parent"
       android:layout_height="match_parent"  >
   </FrameLayout>
   
<!--  the navigation drawer -->
<ListView 
    android:id ="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp"
    android:background="#111"/>
</android.support.v4.widget.DrawerLayout>

以上内容要注意有:

  1. 显示界面主要的View (也就是上面的FrameLayout)一定要是DrawerLayout的第一个子View
  2. 显示界面的View 的宽度和高度与父类的要一样,原因是当navigation drawer不可见的时候 ,界面 内容代表整个界面
  3. Navigation Drawer (上面的 ListView) 必须使用android:layout_gravity属性设置水平的 gravity值 .
  4. 抽屉菜单的宽度为 dp 单位而高度和父View一样。抽屉菜单的宽度应该不超过320dp,这样用户可以在菜单打开的时候看到部分内容界面。

二。 initialize the Drawer List

在您的Activity中需要先初始化Navigation Drawer内容,根据您的应用需要Navigation Drawer的内容可能不是ListView,可以使用其他View。

在上面的示例中,我们需要给Navigation Drawer的ListView设置一个Adapter来提供数据。如下所示:

public class MainActivity extends Activity {
	private String [] mPlanetTitles;
	private DrawerLayout mDrawerLayout;
	private ListView mDrawerList;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mPlanetTitles=new String []{"title1","title2","title3"};
		mDrawerLayout= (DrawerLayout) findViewById(R.id.drawer_layout);
		mDrawerList= (ListView) findViewById(R.id.left_drawer);

		//set the adapter for the list view
		ArrayAdapter< String > adapter= new ArrayAdapter<String>(this,
				R.layout.drawer_list_item, mPlanetTitles);
		mDrawerList.setAdapter(adapter);
		//set the click listener 
		mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

	}
}

代码 中调用 了setOnItemClickListener来接收Navigation drawer List中的点击后的事件。

三。处理导航点击事件

在onItemClick()中 什么取决于你的appa 结构 ,下面的例子中,选择每一个项都会在主内容 View (也就是framelayout)中插入一个不同的 fragment.

   private class DrawerItemClickListener  implements OnItemClickListener{

	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
		// TODO Auto-generated method stub
		selectItem(position);
	}
   }
// Swaps fragments in the main content view FrameLayout
	private void selectItem(int position) {
		// TODO Auto-generated method stub
		//create a new fragment and specify thr planet to show based on position
		android.app.Fragment fragment= new PlanetFragment();
		Bundle args = new Bundle();
		args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position);
		fragment.setArguments(args);

		//insert the fragment by replacing any existing fragment 
       FragmentManager fManager = getFragmentManager();
		fManager.beginTransaction()
			.replace(R.id.content_frame, fragment)
			.commit();
		//high light the selected item update the title and close the drawer 
		mDrawerList.setItemChecked(position, true);

	}

	@Override
	public void setTitle(CharSequence title) {
		// TODO Auto-generated method stub
		mTitle= (String) title;
		getActionBar().setTitle(mTitle);
	}

NavigationDrawer的使用,布布扣,bubuko.com

时间: 2024-10-28 09:46:40

NavigationDrawer的使用的相关文章

ViewDragHelper实践之仿Android官方侧滑菜单NavigationDrawer效果

相信经常使用移动应用的用户都很熟悉侧滑菜单栏, 下拉, 下弹, 上弹等应用场景, 几乎主流的移动应用无论IOS 还是Android都能看到. 2.3以前的时候, 很多第三方比如SlidingMenu, MenuDrawer, ActionbarSherlock等等都很大程度的丰富和深化了这种交互理念.能让小小的屏幕, 容纳更多的交互接口. 也是这种趋势, Android官方在v4终于推出了DrawerLayout. 表示对侧滑的重视与肯定. 唠叨到这了. 去看了DrawerLayout的源码和官

android中NavigationDrawer的使用以及添加drawer切换时的动画效果

最近在开发app的时候需要用到NavigationDrawer,但是在添加动画(汉堡图标和箭头图标互转)效果的时候老是出现问题,折腾了好几个小时终于搞定.在这里跟大家分享一下.说明下,我开发时候用的minSdkVersion 是9,也就是本文所说的方法适用于APIlevel 2.3以上的情况,但若minsdk比较高的话会有略微的差异. 1.效果及依赖 NavigationDrawer是Material Design中推崇的一种控件,网易新闻.知乎都有在使用,先上效果图: 图中开启.关闭Navig

Android开发之Navigationdrawer导航抽屉功能的实现(源代码分享)

导航抽屉(navigationdrawer)是一个从屏幕左边滑入的面板,用于显示应用的主要导航项目.用户可以通过在屏幕左边缘滑入或者触摸操作栏的应用图标打开导航抽屉.导航抽屉覆盖在内容之上,但不覆盖操作栏.当导航抽屉完全打开后,操作栏的标题需要更换为应用的名称,而不是显示当前视图的名称,并且关闭所有和当前视图相关的操作按钮.操作栏的"更多操作"菜单按钮不需要关闭,以保证用户可以随时访问"设置"和"帮助".下面我们就来实现导航抽屉的功能. Layo

NavigationDrawer(导航抽屉)的用法

2013年Google IO当天,Android团队更新了Support库,添加了对NavigationDrawer(导航菜单)的相关支持. 1. 创建DrawerLayout 创建DrawerLayout 在需要抽屉菜单的界面,用DrawerLayout 作为界面根控件.在DrawerLayout里面第一个View为当前界面主内容:第二个和第三个View为抽屉菜单内容.如果当前界面只需要一个抽屉菜单,则第三个View可以省略. 下面的例子中DrawerLayout里面包含两个View,第一个F

Android NavigationDrawer的使用

一开始是冲这个效果去的 用新版本的SDK可以自动生成一个简单的NavigationDrawer项目 但是由于SDK版本太新的问题,运行的效果不如人愿 由于项目中用的appcompat版本是 com.android.support:appcompat-v7:22.0.0 IDE自动导入的却是v4的ActionBarDrawerToggle,所以会出现上面的三条杆居中的问题. import android.support.v4.app.ActionBarDrawerToggle; IDE中报出v4的

基于Goolgle最新NavigationDrawer实现全屏水平平移

常见实现App 上面侧边栏菜单之前使用SlidingMenu,现在发现Goolgle原生NavigationDrawer也挺好用.但是细心的开发者们发现NavigationDrawer没有类似SlidingMenu全屏平移的效果,其实不用着急,简单修改即可实现此效果. 话不多说上代码: //.....省略部分代码 private DrawerLayout.SimpleDrawerListener simpleDrawerListener;//侧边栏基础布局DrawerLayout private

NavigationDrawer+listView 中actionBar的背景色设置

问题描述:activity的main布局是DrawerLayout,侧滑菜单是一个listView.我把activity的theme设置如下: <style name="myActionBarStyle" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:background">#3b8df1</item> </style

2016年最牛逼的分类Android项目源码免费一次性打包下载!

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被我分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你需要的关键字,

GitHub Top 100的Android开源库

本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据GitHub搜索Java语言选择「Best Match」得到的结果,然后过滤了跟Android不相关的项目,所以排名并不具备任何官方效力,仅供参考学习,方便初学者快速了解当前一些流行的Android开源库. 1. React Native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native,