DrawerLayout使用

布局:

 1 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     android:id="@+id/drawer_layout"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5
 6     <!-- The main content view -->
 7
 8     <FrameLayout
 9         android:id="@+id/content_frame"
10         android:layout_width="match_parent"
11         android:layout_height="match_parent" >
12     </FrameLayout>
13
14     <!-- The navigation view -->
15
16     <ListView
17         android:id="@+id/left_drawer"
18         android:layout_width="240dp"
19         android:layout_height="match_parent"
20         android:layout_gravity="start"
21         android:background="#ffffcc"
22         android:choiceMode="singleChoice"
23         android:divider="@android:color/transparent"
24         android:dividerHeight="0dp" >
25     </ListView>
26
27 </android.support.v4.widget.DrawerLayout>

Layout

主界面:

  1 package com.jikexueyuan.drawerlayoutusing;
  2
  3 import java.util.ArrayList;
  4
  5 import android.net.Uri;
  6 import android.os.Bundle;
  7 import android.R.anim;
  8 import android.app.Activity;
  9 import android.app.Fragment;
 10 import android.app.FragmentManager;
 11 import android.content.Intent;
 12 import android.content.res.Configuration;
 13 import android.support.v4.app.ActionBarDrawerToggle;
 14 import android.support.v4.widget.DrawerLayout;
 15 import android.view.Menu;
 16 import android.view.MenuItem;
 17 import android.view.View;
 18 import android.widget.AdapterView;
 19 import android.widget.AdapterView.OnItemClickListener;
 20 import android.widget.ArrayAdapter;
 21 import android.widget.ListView;
 22
 23 public class MainActivity extends Activity implements OnItemClickListener {
 24
 25     private DrawerLayout mDrawerLayout;
 26     private ListView mDrawerList;
 27     private ArrayList<String> menuLists;
 28     private ArrayAdapter<String> adapter;
 29     private ActionBarDrawerToggle mDrawerToggle;
 30     private String mTitle;
 31
 32     @Override
 33     protected void onCreate(Bundle savedInstanceState) {
 34         super.onCreate(savedInstanceState);
 35         setContentView(R.layout.activity_main);
 36
 37         mTitle = (String) getTitle();
 38
 39         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
 40         mDrawerList = (ListView) findViewById(R.id.left_drawer);
 41         menuLists = new ArrayList<String>();
 42         for (int i = 0; i < 5; i++)
 43             menuLists.add("极客学院0" + i);
 44         adapter = new ArrayAdapter<String>(this,
 45                 android.R.layout.simple_list_item_1, menuLists);
 46         mDrawerList.setAdapter(adapter);
 47         mDrawerList.setOnItemClickListener(this);
 48
 49         mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
 50                 R.drawable.ic_drawer, R.string.drawer_open,
 51                 R.string.drawer_close) {
 52             @Override
 53             public void onDrawerOpened(View drawerView) {
 54                 super.onDrawerOpened(drawerView);
 55                 getActionBar().setTitle("请选择");
 56                 invalidateOptionsMenu(); // Call onPrepareOptionsMenu()
 57             }
 58
 59             @Override
 60             public void onDrawerClosed(View drawerView) {
 61                 super.onDrawerClosed(drawerView);
 62                 getActionBar().setTitle(mTitle);
 63                 invalidateOptionsMenu();
 64             }
 65         };
 66         mDrawerLayout.setDrawerListener(mDrawerToggle);
 67
 68         //开启ActionBar上APP ICON的功能
 69         getActionBar().setDisplayHomeAsUpEnabled(true);
 70         getActionBar().setHomeButtonEnabled(true);
 71
 72     }
 73
 74     @Override
 75     public boolean onPrepareOptionsMenu(Menu menu) {
 76         boolean isDrawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
 77         menu.findItem(R.id.action_websearch).setVisible(!isDrawerOpen);
 78         return super.onPrepareOptionsMenu(menu);
 79     }
 80
 81     @Override
 82     public boolean onCreateOptionsMenu(Menu menu) {
 83         // Inflate the menu; this adds items to the action bar if it is present.
 84         getMenuInflater().inflate(R.menu.main, menu);
 85         return true;
 86     }
 87
 88     @Override
 89     public boolean onOptionsItemSelected(MenuItem item) {
 90         //将ActionBar上的图标与Drawer结合起来
 91         if (mDrawerToggle.onOptionsItemSelected(item)){
 92             return true;
 93         }
 94         switch (item.getItemId()) {
 95         case R.id.action_websearch:
 96             Intent intent = new Intent();
 97             intent.setAction("android.intent.action.VIEW");
 98             Uri uri = Uri.parse("http://www.jikexueyuan.com");
 99             intent.setData(uri);
100             startActivity(intent);
101             break;
102         }
103         return super.onOptionsItemSelected(item);
104     }
105
106     @Override
107     protected void onPostCreate(Bundle savedInstanceState) {
108         super.onPostCreate(savedInstanceState);
109         //需要将ActionDrawerToggle与DrawerLayout的状态同步
110         //将ActionBarDrawerToggle中的drawer图标,设置为ActionBar中的Home-Button的Icon
111         mDrawerToggle.syncState();
112     }
113
114     @Override
115     public void onConfigurationChanged(Configuration newConfig) {
116         super.onConfigurationChanged(newConfig);
117         mDrawerToggle.onConfigurationChanged(newConfig);
118     }
119
120     @Override
121     public void onItemClick(AdapterView<?> arg0, View arg1, int position,
122             long arg3) {
123         // 动态插入一个Fragment到FrameLayout当中
124         Fragment contentFragment = new ContentFragment();
125         Bundle args = new Bundle();
126         args.putString("text", menuLists.get(position));
127         contentFragment.setArguments(args);
128
129         FragmentManager fm = getFragmentManager();
130         fm.beginTransaction().replace(R.id.content_frame, contentFragment)
131                 .commit();
132
133         mDrawerLayout.closeDrawer(mDrawerList);
134     }
135
136 }

MainActivity

跳转界面:

package com.jikexueyuan.drawerlayoutusing;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class ContentFragment extends Fragment {

    private TextView textView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_content, container, false);
        textView = (TextView) view.findViewById(R.id.textView);

        String text = getArguments().getString("text");
        textView.setText(text);

        return view;
    }

}

ContentFragment

Thanks

时间: 2024-12-17 03:27:40

DrawerLayout使用的相关文章

360手机助手(二):侧拉栏drawerLayout+Tab+Viewpager+ListView+Pulltorefresh+imageloder

整个项目的框架在ContentPager,要熟悉这个类. 简介 完成侧拉栏的显示,侧拉首页对应的:首页+应用+游戏这3个 tab,包含的知识点有:请求数据 +pullTofresh + ImageLoader +轮播图 + listView 效果图: 侧拉栏的实现 V4包中的DrawerLayout实现侧拉效果,每个侧拉的item对应一个fragment,点击该item时,先把所有的fragment隐藏 + 文字设置未选中,然后才创建对应的fragment并显示 怎么实现侧拉栏的显示与隐藏? 点

android官方侧滑菜单DrawerLayout详解

drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物.drawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现). drawerLayout的使用很方便,使用drawerLayout的要点如下: 1.drawerLayout其实是

android 应用架构随笔五(ActionBar与侧滑菜单DrawerLayout)

ActionBar(V7)的添加非常简单,只需要在AndroidManifest.xml中指定Application或Activity的theme是Theme.Holo或其子类就可以了,在Android 3.0及更高的版本中,Activity中都默认包含有ActionBar组件. drawerLayout(V4)是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物.drawer

安卓Design包之NavigationView结合DrawerLayout,toolbar的使用,FloatingActionButton

FloatingActionButton 悬浮按钮:FloatingActionButton是重写ImageView的,所有FloatingActionButton拥有ImageView的一切属性. app:backgroundTint - 设置FAB的背景颜色. app:rippleColor - 设置FAB点击时的背景颜色. app:borderWidth - 该属性尤为重要,如果不设置0dp,那么在4.1的sdk上FAB会显示为正方形,而且在5.0以后的sdk没有阴影效果.所以设置为bor

【转】android官方侧滑菜单DrawerLayout详解

原文网址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0925/1713.html drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物.drawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着

DrawerLayout的openDrawer()和closeDrawer()方法

如下代码 DrawerLayout mdrawerLayout; Button btn; -----------------------------------------------------------------------------------------------------------------------以上为声明组件,为简便其余过程省略 btn.setOnClickListener(new OnClickListener(){ mdrawerLayout.openDraw

用DrawerLayout(Support Library 4提供)开发侧边栏,有没有什么方法关闭手势控制?

============问题描述============ 用android.support.v4.widget.DrawerLayout开发了一个抽屉效果的侧边栏,有没有什么方法可以关闭它的手势操作(就是从左往右划),找遍了它提供的方法,还是没找到. ============解决方案1============ mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

Android ToolBar自定义图标,关联DrawerLayout

Android5.0出现了一个可以代替ActionBar的控件ToolBar,使用更加灵活,一般我们使用ToolBar来和DrawerLayout配合使用,官方提供了一个开关类ActionBarDrawerToggle,来实现ToolBar和DrawerLayout的关联,但是 有时根据我们的需求需要更改左侧的图标,不在需要系统默认的三条杠的图标同时点击图标还想要DrawerLayout的侧拉页面出来,下面讲解两种不同的方式 一:通过代码来实现改变ToolBar的图标 public class

DrawerLayout,ToolBar 和 TabHost 的使用

ActionBar 定义起来不方便 toolbar: 最重要的特性,显示menu菜单,右上角三个点的菜单按钮,使用灵活 使用:1,布局文件,包裹LinearLayout 放imageView, 或者ImageButton 2,去除标题栏Action(清单文件中设置主题Theme.AppCompat.NoTitle) 3,setActionBar( toolbar ); Activity extends AppCompatActivity 4,创建menu文件夹下面的menu.xml文件 <?xm