DrawerLayout抽屉
ONE GOAL,ONE PASSION!
--czfy
DrawerLayout就是android.support.v4.widget下的一个普通控件继承至ViewGroup
(在亲爹Google眼中它和LinearLayout一样没有什么区别,还没有LinearLayout
受宠.DrawerLayout其实就是一个Drawer抽屉容器).
官方介绍抽屉的使用
To use a DrawerLayout, position your primary content view as the first child with
a width and height of match_parent
. Add drawers as child views after the main
content view and set the layout_gravity
appropriately. Drawers commonly use
match_parent
for height with a fixed width.
大致意思:
1,使用时,内容界面要作为第一个子view,而且宽和高要使用match_parent.
2,抽屉要设置layout_gravity属性.而且通常高度使用:match_parent,宽度使用:fixed width(具体的宽度)
Drawer positioning and layout is controlled using the android:layout_gravity
attribute on child views corresponding to which side of the view you want the drawer to emerge from: left or right. (Or start/end on platform versions that support layout direction.)
大致意思:
抽屉应该设置一个属性layout_gravity = “left”:
left/start 左侧
right/end 右侧
DrawerLayout常用的一些方法:
关闭抽屉 :closeDrawers();
打开抽屉 :drawerlayout.openDrawer(抽屉view);
设置抽屉的阴影:setDrawerShadow(@DrawableRes int resId, @EdgeGravity int gravity) 如果你的抽屉在左边的话设置成 Gravity.LEFT显示.反之.
代码中简单的使用
1,主要就是布局的写法;
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawerlayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 这是内容界面-->
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right"
android:text="内容区域" />
<!-- 这个是抽屉
android:gravity此属性一定要是left/start right/end4种
一般情况下,这这里是个listview
-->
<TextView
android:id="@+id/tv_left"
android:layout_width="400dp"
android:layout_height="match_parent"
android:layout_gravity="right"
android:gravity="center"
android:background="#ffff00"
android:text="抽屉区域" />
</android.support.v4.widget.DrawerLayout>
</RelativeLayout>
2,可以设置一些其他的效果
public class DrawerLayoutActivity extends Activity {
DrawerLayout drawerlayout;
TextView tv_left;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawer_layout);
tv_left = (TextView) findViewById(R.id.tv_left);
drawerlayout = (DrawerLayout) findViewById(R.id.drawerlayout);
//设置抽屉阴影
drawerlayout.setDrawerShadow(R.drawable.title_bg, Gravity.RIGHT);
.....
}
}
3,效果图:
这个控件的效果和SlidingMenu不一样.抽屉拉出时,内容区域被覆盖了.而SildingMenu没有.
注: 笔者水平有限,如您偶尔看到,发现什么错误,请指正,谢谢!