您的位置:首页 > 移动开发 > Android开发

Android DrawerLayout的学习

2016-04-14 09:02 405 查看
DrawerLayout

基本使用!

1 在xml中声明

最外层用 android.support.v4.widget.DrawerLayout,FrameLayout 为主视图,ListView 为抽屉列表。 为listview添加adapter就可以使用了

<android.support.v4.widget.DrawerLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/drawerlayout"

android:layout_height="match_parent"

android:layout_width="match_parent"

>

<!-- the main content view -->

<FrameLayout

android:id="@+id/framelayout"

android:layout_height="match_parent"

android:layout_width="match_parent"

></FrameLayout>

<!-- navigation view -->

<ListView

android:id="@+id/listview"

android:layout_height="match_parent"

android:layout_width="240dp"

android:background="#ff7092be"

android:layout_gravity="start"

android:choiceMode="singleChoice"

android:divider="@android:color/transparent"

android:dividerHeight ="20dp"

></ListView>

</android.support.v4.widget.DrawerLayout>

2 为listview添加点击事件

可以跳转到Fragment。 这里给fragment传递了list的text。

MyFragment myFragment = new MyFragment();

Bundle b = new Bundle();

b.putString("text", list.get(arg2));

myFragment.setArguments(b);

FragmentManager fManager = getFragmentManager();

fManager.beginTransaction().replace(R.id.framelayout, myFragment).commit();

drawerLayout.closeDrawer(listView);

3 给抽屉添加事件监听器

抽屉的事件监听是 ,对应抽屉打开和关闭时的时间触发。 这里做的是改变actionbar 的title 。

mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.test, R.string.open_drawer, R.string.close_drawer){

@Override

public void onDrawerOpened(View drawerView) {

// TODO Auto-generated method stub

super.onDrawerOpened(drawerView);

getActionBar().setTitle("请选择");

invalidateOptionsMenu();

}

@Override

public void onDrawerClosed(View drawerView) {

// TODO Auto-generated method stub

super.onDrawerClosed(drawerView);

getActionBar().setTitle(title);

invalidateOptionsMenu();

}

};

drawerLayout.setDrawerListener(mDrawerToggle);

4 actionbar上的按钮实现

左上角按钮 实现点击可以打开关闭 drawerlayout。

首先 开启 actionbar的 按钮:

getActionBar().setDisplayHomeAsUpEnabled(true);

getActionBar().setHomeButtonEnabled(true);

然后在这两个方法中,让drawerlayout的按钮,替换actionbar的图标

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// TODO Auto-generated method stub

if (mDrawerToggle.onOptionsItemSelected(item)) {

return true;

}

return super.onOptionsItemSelected(item);

}

@Override

protected void onPostCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onPostCreate(savedInstanceState);

mDrawerToggle.syncState();

}

@Override

public void onConfigurationChanged(Configuration newConfig) {

// TODO Auto-generated method stub

super.onConfigurationChanged(newConfig);

mDrawerToggle.onConfigurationChanged(newConfig);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: