Android中的DrawerLayout
简介
Drawerlayout是google自带的控件,功能类似开源的SlidingMenu,在support-v4包下用来替代SlidingMenu(google好无耻啊)。
使用方法
在activity_main.xml中定义:
<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 view -->
<ListView
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#ffffcc"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
></ListView> </android.support.v4.widget.DrawerLayout>
注意事项:
- drawerlayout的主视图必须要是DrawerLayout的第一个子视图。
- 主视图宽度和高度匹配父视图,即match_parent,抽屉隐藏的时候,必须让主视图占满屏幕。
- 必须指定抽屉的android:layout_gravity属性
- 抽屉视图的宽度以dp为单位,最好不超过300dp
在drawerLayout中添加子项:
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ArrayList<String> menuLists;
private ArrayAdapter<String> mAdapter;
for (int i = 0; i < 5; i++){
menuLists.add("Hello0" + i);
}
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, menuLists);
mDrawerList.setAdapter(mAdapter);
mDrawerList.setOnItemClickListener(this);
同时响应点击事件:
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//动态插入fragment到framelayout当中
Fragment contentFragment = new ContentFragment();
Bundle args = new Bundle();
args.putString("text", menuLists.get(i));
contentFragment.setArguments(args);
FragmentManager fm = getFragmentManager();
fm.beginTransaction().replace(R.id.content_frame, contentFragment).commit();
mDrawerLayout.closeDrawer(mDrawerList);
}
根据点击位置设置动态添加的fragment中的文字:
public class ContentFragment extends Fragment {
private TextView mTextView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_content, container, false);
mTextView = (TextView) view.findViewById(R.id.textView);
String text = getArguments().getString("text");
mTextView.setText(text);
return view;
}
}
为DrawerLayout打开关闭设置监听器:
- mDrawerLayout.setDrawerListener(DrawerLayout.DrawerListener);
- 设置android.R.id.home的图标
- Drawer拉出,隐藏带有android.R.id.home动画效果
- 监听Drawer拉出还是隐藏事件
2. ActionBarDrawerToggle是DrawerLayout.DrawerListener的具体实现。
3. 覆盖ActionBarDrawerToggle的onDrawerOpened和onDrawerClosed()以监听抽屉拉出或隐藏事件。
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActionBar().setTitle("Please Choose");
} @Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
getActionBar().setTitle(mtitle);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
Android中的DrawerLayout的更多相关文章
- Android 中 DrawerLayout + ViewPager 怎么解决滑动冲突?
DrawerLayout 是 Android 官方的侧滑菜单控件,而 ViewPager 相信大家都很熟悉了.今天这里就讲一下当在 DrawerLayout 中嵌套 ViewPager 时,要如何解决 ...
- Android抽屉效果 DrawerLayout 入门经验总结
今天试了试这个抽屉布局的效果,结果很崩溃无语 网上很多资料都千篇一律,感觉都有问题,下面总结下几点经验: 先上个效果图: 1. layout 布局文件中怎么写: <android.suppor ...
- Android组件——使用DrawerLayout仿网易新闻v4.4侧滑菜单
摘要: 转载请注明出处:http://blog.csdn.net/allen315410/article/details/42914501 概述 今天这篇博客将记录一些关于DrawerL ...
- Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果
在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒. 后来,Android自己推出了一个可以实现策划导航的组件DrawerLay ...
- Android中的LinearLayout布局
LinearLayout : 线性布局 在一般情况下,当有很多控件需要在一个界面列出来时,我们就可以使用线性布局(LinearLayout)了, 线性布局是按照垂直方向(vertical)或水平方向 ...
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...
- Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP)
之前的博文<Android中使用ExpandableListView实现好友分组>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的仿微信 ...
- Android中ListView实现图文并列并且自定义分割线(完善仿微信APP)
昨天的(今天凌晨)的博文<Android中Fragment和ViewPager那点事儿>中,我们通过使用Fragment和ViewPager模仿实现了微信的布局框架.今天我们来通过使用Li ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
随机推荐
- Github的命令清除
最近折腾Github,对于我这个英语词汇量不多的人来说就是折磨,几乎是翻着字典探索的. 功能上就不多说了,还没发现新东西,只是刚摸索出如何上传(下载还没弄明白了,苦啊....) 就是在使用GitBas ...
- Android导航栏菜单强制转换
private void getOverflowMenu() { ViewConfiguration viewConfig = ViewConfiguration.get(this); try { F ...
- Java多线程初探
多线程 单线程的程序只有一个顺序执行流.多个顺序流之间互不干扰. 多线程的创建 定义Thread类的子类,重写该类的run()方法. 创建Thread子类的实例. 调用线程对象的start()方法来启 ...
- 使用 StringBuilder
嘿嘿,请不要说我是偷取,我只是借鉴一下.. String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串 对象,这就需要为该新对象分配新的空间 ...
- windows界面库种类
访问网址http://www.360doc.com/content/14/0612/20/13826502_386093297.shtml
- jdbcTemplate的Dao层封装
package com.easyrail.base.dao; import java.io.Serializable; import java.lang.reflect.Field; import j ...
- Android之常用Git命令
Android之常用Git命令 代码修改后提交步骤:git status:查看代码修改状态git diff:查看代码修改细节,也能看代码空格git add . :添加新加入的代码git commit ...
- js判断中文
var reg = /^[\u4E00-\u9FA5]+$/;if(!reg.test(keywordscn)){ alert('请填写中文') return false;}
- 报错记录:getOutputStream() has already been called for this response
仅作记录:参考文章:http://www.blogjava.net/vickzhu/archive/2008/11/03/238337.html 报错信息: java.lang.IllegalStat ...
- zookeeper的zoo.cfg的配置
zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg.其中各配置项的含义,解释如下: tickTime:CS通信心跳时间 Zook ...