zoukankan      html  css  js  c++  java
  • android studio DrawerLayout(官方侧滑菜单)的简单使用1

    1.使用的注意事项

    • 1.主内容视图一定要是DrawerLayout的第一个子视图
    • 2.主内容视图宽度和高度需要match_parent
    • 3.必须显示指定侧滑视图的android:layout_gravity属性 android:layout_gravity = "start"时,从左向右滑出菜单 android:layout_gravity = "end"时,从右向左滑出菜单 不推荐使用left和right!!!
    • 侧滑视图的宽度以dp为单位,不建议超过320dp(为了总能看到一些主内容视图)
    • 设置侧滑事件:mDrawerLayout.setDrawerListener(DrawerLayout.DrawerListener);
    • 要说一点:可以结合Actionbar使用当用户点击Actionbar上的应用图标,弹出侧滑菜单! 这里就要通过ActionBarDrawerToggle,它是DrawerLayout.DrawerListener的具体实现类, 我们可以重写ActionBarDrawerToggle的onDrawerOpened()和onDrawerClosed()以监听抽屉拉出 或隐藏事件!但是这里我们不讲,因为5.0后我们使用的是Toolbar!有兴趣的可以自行查阅相关 文档!

    2.使用代码示例

    示例1:单个侧滑菜单的实现

    实现关键代码

    首先是我们的主布局,注意:最外层要是DrawerLayout哦!!!!

    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">
    
        <FrameLayout
            android:id="@+id/ly_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
        <ListView
            android:id="@+id/list_left_drawer"
            android:layout_width="180dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="#080808"
            android:choiceMode="singleChoice"
            android:divider="#FFFFFF"
            android:dividerHeight="1dp" />
    
    </android.support.v4.widget.DrawerLayout>

    接着ListView的布局代码和domain类:Item比较简单,就不给出了,直接上中间Fragment的 布局以及代码吧!另外Adapter直接复用我们之前写的那个可复用的MyAdapter!

    fg_content.xml

    <?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:orientation="vertical">
    
        <TextView
            android:id="@+id/tv_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textSize="25sp" />
    
    </RelativeLayout>

    ContentFragment.java

    <?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:orientation="vertical">
    
        <TextView
            android:id="@+id/tv_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textSize="25sp" />
    
    </RelativeLayout>

    最后是我们的Activity类

    MainActivity.java

    public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{
    
        private DrawerLayout drawer_layout;
        private ListView list_left_drawer;
        private ArrayList<Item> menuLists;
        private MyAdapter<Item> myAdapter = null;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            drawer_layout = (DrawerLayout) findViewById(R.id.drawer_layout);
            list_left_drawer = (ListView) findViewById(R.id.list_left_drawer);
    
            menuLists = new ArrayList<Item>();
            menuLists.add(new Item(R.mipmap.iv_menu_realtime,"实时信息"));
            menuLists.add(new Item(R.mipmap.iv_menu_alert,"提醒通知"));
            menuLists.add(new Item(R.mipmap.iv_menu_trace,"活动路线"));
            menuLists.add(new Item(R.mipmap.iv_menu_settings,"相关设置"));
            myAdapter = new MyAdapter<Item>(menuLists,R.layout.item_list) {
                @Override
                public void bindView(ViewHolder holder, Item obj) {
                    holder.setImageResource(R.id.img_icon,obj.getIconId());
                    holder.setText(R.id.txt_content, obj.getIconName());
                }
            };
            list_left_drawer.setAdapter(myAdapter);
            list_left_drawer.setOnItemClickListener(this);
        }
    
    
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            ContentFragment contentFragment = new ContentFragment();
            Bundle args = new Bundle();
            args.putString("text", menuLists.get(position).getIconName());
            contentFragment.setArguments(args);
            FragmentManager fm = getSupportFragmentManager();
            fm.beginTransaction().replace(R.id.ly_content,contentFragment).commit();
            drawer_layout.closeDrawer(list_left_drawer);
        }
    }
  • 相关阅读:
    SSL JudgeOnline 1194——最佳乘车
    SSL JudgeOnline 1457——翻币问题
    SSL JudgeOnlie 2324——细胞问题
    SSL JudgeOnline 1456——骑士旅行
    SSL JudgeOnline 1455——电子老鼠闯迷宫
    SSL JudgeOnline 2253——新型计算器
    SSL JudgeOnline 1198——求逆序对数
    SSL JudgeOnline 1099——USACO 1.4 母亲的牛奶
    SSL JudgeOnline 1668——小车载人问题
    SSL JudgeOnline 1089——USACO 1.2 方块转换
  • 原文地址:https://www.cnblogs.com/mjhjl/p/14902351.html
Copyright © 2011-2022 走看看