2.SlidingMenu(侧边栏效果)

 > 使用步骤

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

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

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

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基类

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.左边侧边栏

<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>
public class LeftMenuFragment extends BaseFragment {	@Override	public View initViews() {		View view = View.inflate(mActivity, R.layout.fragment_left_menu, null);		return view;	}}

3.主页面

<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>
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的那个对象

<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>
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);	}}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

android 多条件筛选菜单效果

http://blog.csdn.net/u011733020/article/details/51002746

1.1K20
来自专栏10km的专栏

jface databinding:使用CheckboxTableViewer实现表中(Set)对象与CheckTable中选中条目数据绑定

上一篇博文《jface databinding:可多选的widget List组件selection项目与java.util.List对象的双向数据绑定》讲述了...

427100
来自专栏Android开发指南

5.侧边栏逻辑

384120
来自专栏程序员的诗和远方

看代码学AndroidUI - Tab

最近慢慢学习一点安卓,先看了些基础的,还处于很初级的阶段,平常都是面对弱类型的语言,python,js,现在看java突然有点不适应。 这里推荐郭神的《第一行代...

34090
来自专栏分享达人秀

GridView属性和使用方法

前面一共用了8期来学习ListView列表的相关操作,其实学习的ListView的知识完全适用于AdapterView的其他子类,如GridView、S...

33370
来自专栏学海无涯

Android开发之ViewPager简单使用

什么是ViewPager? ViewPager(android.support.v4.view.ViewPager)是android扩展包v4包中的类,这个类可...

33750
来自专栏技术小黑屋

Android内存泄漏:谨慎使用getSystemService

Android中有很多服务,比如PowerManager,AlarmManager,NotificationManager等,通常使用起来也很方便,就是使用Co...

11930
来自专栏Android知识点总结

2-VII-RecyclerView事件

9740
来自专栏青蛙要fly的专栏

Android技能树 — PopupWindow小结

关于下拉选择框,估计大家都有很多选择,我在以前的文章:项目需求讨论-HyBrid模式需求改造 上写过下拉框选择这一块,正好用的Spinner。

15210
来自专栏Android中高级开发

Android开发之漫漫长途 XII——Fragment详解

该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索...

9910

扫码关注云+社区

领取腾讯云代金券