ToolBar加DrawerLayout加Fragment实现侧滑菜单
来源:互联网 发布:3dmax软件 编辑:程序博客网 时间:2024/05/16 11:27
遇到需要侧滑菜单这种情况,以前总是用slidingmenu,今天我们用drawerLayout实现,比前者代码简单多了.
本例效果:
先看布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!--这个是toolbar--> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="45dp" android:background="?attr/colorPrimary" /> <!--今天的主题,drawerLayout--> <android.support.v4.widget.DrawerLayout android:id="@+id/drawerlayout" android:layout_width="match_parent" android:layout_height="match_parent"> <!--Fragment挂载在这个控件上--> <FrameLayout android:id="@+id/fl" android:layout_width="match_parent" android:layout_height="match_parent"/> <!--左边的策划菜单--> <ListView android:id="@+id/lv" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="#ccc" android:divider="@android:color/transparent"/> </android.support.v4.widget.DrawerLayout></LinearLayout>布局文件很简单,我们把actionbar替换成了toolbar,哦,对了,主题用:Theme.AppCompat.Light.NoActionBar
主要代码:
public class MainActivity extends AppCompatActivity { private Toolbar toolbar; private DrawerLayout drawerLayout; private ListView listView; private String[] items = {"List1", "List2", "List3", "List04"}; private ActionBarDrawerToggle mDrawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); drawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout); listView = (ListView) findViewById(R.id.lv); //设置标题 toolbar.setTitle(items[0]); setSupportActionBar(toolbar); //下面2行决定是否显示左上方3个横杠的图标 getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); //这个open和close在string分别写的开,关 mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close); //决定是否切换三个横杠的图标和箭头之间切换 mDrawerToggle.syncState(); drawerLayout.setDrawerListener(mDrawerToggle); getSupportFragmentManager().beginTransaction().replace(R.id.fl, ItemFragment.getInstance(items[0])).commit(); listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items)); //条目点击事件 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //将数据传到Fragment里面 Fragment fragment = ItemFragment.getInstance(items[position]); getSupportFragmentManager().beginTransaction().replace(R.id.fl, fragment).commit(); toolbar.setTitle(items[position]); //关闭左边的抽屉 drawerLayout.closeDrawer(listView); } }); } //点击图标开关抽屉 @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); }}ItemFragment代码:
public class ItemFragment extends Fragment { private String name; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); savedInstanceState = getArguments(); if (savedInstanceState != null) { name = savedInstanceState.getString("name"); } } public static Fragment getInstance(String name) { Fragment fragment = new ItemFragment(); Bundle args = new Bundle(); args.putString("name", name); fragment.setArguments(args); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { TextView tv = new TextView(getActivity()); tv.setText(name); return tv; }}是不是很简单啊!
阅读全文
0 0
- ToolBar加DrawerLayout加Fragment实现侧滑菜单
- DrawerLayout+FragmentTabHost+ToolBar实现左滑菜单及fragment切换
- Toolbar + drawerlayout 实现侧滑菜单
- NavigationView+Drawerlayout+Toolbar实现侧滑菜单
- 使用DrawerLayout+Toolbar实现侧滑菜单
- Fragment的嵌套和侧滑菜单DrawerLayout加标签页的使用
- Android:使用Toolbar + DrawerLayout快速实现菜单侧滑
- 使用Toolbar + DrawerLayout快速实现菜单侧滑
- Android Toolbar+DrawerLayout+PagerSlidingTabStrip实现仿csdn侧滑菜单
- 利用ToolBar和Drawerlayout实现简单的侧滑菜单
- Android实现侧滑抽屉菜单(DrawerLayout+NavigationView+toolbar)
- 侧滑菜单的简单实现(DrawerLayout+Toolbar+NavigationView)
- 使用Toolbar与DrawerLayout实现侧滑菜单
- Kotlin实现侧滑抽屉菜单(DrawerLayout+NavigationView+Toolbar)
- Toolbar + DrawerLayout实现侧滑
- 用FragmentTabHost加Fragment实现底部菜单
- 侧拉菜单加Fragment布局
- 侧滑菜单DrawerLayout+Toolbar结合使用,切换菜单
- poj-1006-Biorhythms-(中国剩余定理)
- 四周第四次课 2017.11.09 压缩打包介绍、gzip压缩工具、bzip2压缩工具、xz压缩工具
- 洛谷P3368 【模板】树状数组 2
- hdu 1789Doing Homework again
- java常见异常分类
- ToolBar加DrawerLayout加Fragment实现侧滑菜单
- 系统时间
- TensorFlow学习笔记10——TensorFlow保存和调用模型遇到的问题
- redis学习(一)——redis介绍及安装
- 泛型的概念以及泛型的使用
- 文章标题
- 【poj3254】Corn Fields
- hdfs所有nameNode都是standby,zkfc 进程锁启动不了。
- GYM 100962F Problem F. Frank Sinatra(树上莫队+分块)