Android DrawerLayout+ fragment 布局实现左右侧滑
16lz
2021-01-23
技术要点: android.support.v4.widget.DrawerLayout
打开抽屉: DrawerLayout .openDrawer();
关闭抽屉:DrawerLayout.closeDrawer( );
为slidingLayout设置一个layout_grative属性
中间 左侧 右侧
点击first 点击second
代码:
activity_main.xml
first.xml
second.xml
MainActivity.java
package org.busyboy.drawerlayout;import com.example.testdrawerlayout.R;import android.os.Bundle;import android.app.Activity;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentTransaction;import android.support.v4.widget.DrawerLayout;import android.view.Gravity;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.RelativeLayout;import android.widget.AdapterView.OnItemClickListener;import android.widget.TextView;public class MainActivity extends FragmentActivity{ public static final String[] TITLES = { "First", "Second" }; private DrawerLayout mDrawer_layout;//DrawerLayout容器 private RelativeLayout mMenu_layout_left;//左边抽屉 private RelativeLayout mMenu_layout_right;//右边抽屉 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDrawer_layout = (DrawerLayout) findViewById(R.id.drawer_layout); mMenu_layout_left = (RelativeLayout) findViewById(R.id.menu_layout_left); mMenu_layout_right = (RelativeLayout) findViewById(R.id.menu_layout_right); ListView menu_listview_l = (ListView) mMenu_layout_left.findViewById(R.id.menu_listView_l); ListView menu_listview_r = (ListView) mMenu_layout_right.findViewById(R.id.menu_listView_r); menu_listview_l.setAdapter(new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, TITLES)); menu_listview_r.setAdapter(new ArrayAdapter(this, android.R.layout.simple_expandable_list_item_1, TITLES)); //监听菜单 menu_listview_l.setOnItemClickListener(new DrawerItemClickListenerLeft()); menu_listview_r.setOnItemClickListener(new DrawerItemClickListenerRight()); } /** * 左侧列表点击事件 * @author busy_boy * */ public class DrawerItemClickListenerLeft implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); Fragment fragment = null; //根据item点击行号判断启用哪个Fragment switch (position) { case 0: fragment = new FirstFragment(); break; case 1: fragment = new SecondFragment(); break; default: break; } ft.replace(R.id.fragment_layout, fragment); ft.commit(); mDrawer_layout.closeDrawer(mMenu_layout_left);//关闭mMenu_layout } } /** * 右侧列表点击事件 * @author busy_boy * */ private class DrawerItemClickListenerRight implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); Fragment fragment = null; //根据item点击行号判断启用哪个Fragment switch (position) { case 0: fragment = new FirstFragment(); break; case 1: fragment = new SecondFragment(); break; default: break; } ft.replace(R.id.fragment_layout, fragment); ft.commit(); mDrawer_layout.closeDrawer(mMenu_layout_right);//关闭mMenu_layout } }}
FirstFragment.java
package org.busyboy.drawerlayout;import com.example.testdrawerlayout.R;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class FirstFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {return inflater.inflate(R.layout.first, null);}}
SecondFragment.java
package org.busyboy.drawerlayout;import com.example.testdrawerlayout.R;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class SecondFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {return inflater.inflate(R.layout.second, null);}}
android.support.v4.widget.DrawerLayout 官方文档位置:http://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html
更多相关文章
- android 对话框模板布局之一
- android 写布局的时候注意大小写
- android xml 布局错误
- Android学习笔记(二)android studio基本控件及布局(实现图片查看器)
- android抽屉效果的实现
- 相对布局的一些属性
- android代码编写布局和控件
- [Android]屏幕自适应布局