前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2.SlidingMenu(侧边栏效果)

2.SlidingMenu(侧边栏效果)

作者头像
六月的雨
发布2018-05-14 10:46:10
1.7K0
发布2018-05-14 10:46:10
举报
文章被收录于专栏:Android开发指南Android开发指南

 > 使用步骤

库:别的程序可以用它的方法、图片。

下载的其中一个框架的例子是没有actionBar的,example_update

引入出错可能是俩个v4包冲突了,删掉工程里的一个,不要删了库里的,如果还有错误看probles里说什么或者重启,或者选中工程右键-build path-最后一项,把有x的移除,这是运行环境的问题。而我的问题是软件里自带的v7程序里的v4包和库里的v4包冲突了,我将这个替换掉,发现以前所有的工程都报错了,发现里这些工程里的包重新导一下就可以了,可是有xutils的工程不行,可能xutils的v4冲突把 - 1. 引入SlidingMenu的库文件 - 2. Activity继承SlidingFragmentActivity - 3. 将onCreate方法改为public - 调用api

代码语言:javascript
复制
public class MainActivity extends SlidingFragmentActivity {	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		setBehindContentView(R.layout.left_menu);// 设置侧边栏布局		SlidingMenu slidingMenu = getSlidingMenu();// 获取侧边栏对象		slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);// 设置全屏触摸		slidingMenu.setSecondaryMenu(R.layout.right_menu);// 设置右侧边栏		slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);// 设置展现模式		slidingMenu.setBehindOffset(100);// 设置预留屏幕的宽度	}}

如果布局文件太过复杂,那就弄俩个Fragment ,一个处理侧边栏逻辑,一个处理主页面

Fragment 和SlidingMenu结合使用实:

1.fragment基类

代码语言:javascript
复制
public abstract class BaseFragment extends Fragment {	public Activity mActivity;	// fragment创建	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		mActivity = getActivity();	}	// 处理fragment的布局	@Override	public View onCreateView(LayoutInflater inflater, ViewGroup container,			Bundle savedInstanceState) {		return initViews();	}	// 依附的activity创建完成	@Override	public void onActivityCreated(Bundle savedInstanceState) {		super.onActivityCreated(savedInstanceState);		initData();	}	// 子类必须实现初始化布局的方法	public abstract View initViews();	// 初始化数据, 可以不实现	public void initData() {	}}

2.左边侧边栏

代码语言:javascript
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#f00" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="我是侧边栏!" /></RelativeLayout>
代码语言:javascript
复制
public class LeftMenuFragment extends BaseFragment {	@Override	public View initViews() {		View view = View.inflate(mActivity, R.layout.fragment_left_menu, null);		return view;	}}

3.主页面

代码语言:javascript
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="我是主页面哦!" /></RelativeLayout>
代码语言:javascript
复制
public class ContentFragment extends BaseFragment {	@Override	public View initViews() {		View view = View.inflate(mActivity, R.layout.fragment_content, null);//这里用了三个参数的inflate,跟下面的一样//LayoutInflater inflater = LayoutInflater.from(MainActivity.this);//			使用布局填充器填充布局文件//			View v2 = inflater.inflate(R.layout.item_listview, null);		return view;	}}

4.俩个结合起来Fragment ,这个activity的主布局和侧边布局都是个的framelayout,因为他们是用来放frame的,而侧边栏也需要写个fargment用来放继承fargment的那个对象

代码语言:javascript
复制
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/fl_content"    android:layout_width="match_parent"    android:layout_height="match_parent" ></FrameLayout><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/fl_left_menu"    android:descendantFocusability="blocksDescendants"    android:layout_width="match_parent"    android:layout_height="match_parent" ></FrameLayout>
代码语言:javascript
复制
public class MainActivity extends SlidingFragmentActivity {//设置了标签就能找到碎片,然后调用它里面的方法,和找id是一样的	private static final String FRAGMENT_LEFT_MENU = "fragment_left_menu";	private static final String FRAGMENT_CONTENT = "fragment_content";	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		setBehindContentView(R.layout.left_menu);// 设置侧边栏		SlidingMenu slidingMenu = getSlidingMenu();// 获取侧边栏对象		slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);// 设置全屏触摸		slidingMenu.setBehindOffset(200);// 设置预留屏幕的宽度		initFragment();	}	/**	 * 初始化fragment, 将fragment数据分别填充给主页面和侧边栏	 */	private void initFragment() {		FragmentManager fm = getSupportFragmentManager();		FragmentTransaction transaction = fm.beginTransaction();// 开启事务		transaction.replace(R.id.fl_left_menu, new LeftMenuFragment(),				FRAGMENT_LEFT_MENU);// 用fragment替换framelayout		transaction.replace(R.id.fl_content, new ContentFragment(),				FRAGMENT_CONTENT);		transaction.commit();// 提交事务		// Fragment leftMenuFragment = fm.findFragmentByTag(FRAGMENT_LEFT_MENU);	}}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-10-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档