【Andord真】SlideMenu+ViewPagerIndictor双滑动边栏+滑动导航条
2024-10-18 21:20:06
采取SlideMenu达到的效果侧边栏:
间
setContentView是设置主背景的布局
setBehindContentView是设置左边菜单的布局
setSecondaryMenu是设置右边的布局
setShadowWidth是设置阴影的宽度
setBehindWidth是设置有效的拉出宽度
setMode是设置开启左右两边的菜单
採用ViewPagerIndictor实现滑动的导航栏和页面布局
当中採用TabPageIndicator做可滑动导航栏
ViewPager做滑动的布局
首先要设置导航栏的样式
<style name="HomeUpTheme" parent="android:Theme.Holo.Light.DarkActionBar"> <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item> </style> <style name="CustomTabPageIndicator" parent="Widget.TabPageIndicator">
<item name="android:dividerPadding">10dp</item>
<item name="android:paddingLeft">20dp</item>
<item name="android:paddingRight">20dp</item>
<item name="android:paddingTop">10dp</item>
<item name="android:paddingBottom">10dp</item>
<item name="android:textSize">10pt</item>
<item name="android:textAppearance">@style/CustomTabPageIndicator.Text</item>
<item name="android:textColor">#000000</item>
<item name="android:fadingEdge">horizontal</item>
<item name="android:fadingEdgeLength">8dp</item>
<item name="android:background">@drawable/selectitle</item>
<item name="android:gravity">center</item>
</style>
在代码中
ViewPager里面可设置载入
布局适配器PagerAdapter重写instantiateItem方法
碎片适配器FragmentStatePagerAdapter重写Fragment getItem()的方法
最后把两者关联起来
indicatorView.setViewPager(pager);
完整代码:
public class MainAct extends SlidingActivity { SlidingMenu slidingMenu;
TabPageIndicator indicatorView;
ViewPager pager; @Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState); setBehindContentView(R.layout.slide_behind);
setContentView(R.layout.slide_main);
slidingMenu = getSlidingMenu();
slidingMenu.setBehindOffset(300);
slidingMenu.setBehindWidth(400);
slidingMenu.setSecondaryMenu(R.layout.slide_second);
// slidingMenu.setTouchModeAbove(SlidingMenu.LEFT_RIGHT);
slidingMenu.setShadowWidth(100);
slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
indicatorView = (TabPageIndicator) findViewById(R.id.indicator);
pager = (ViewPager) findViewById(R.id.pager); pager.setAdapter(new Myadapter());
pager.setOffscreenPageLimit(8);
indicatorView.setOnTabReselectedListener(new OnTabReselectedListener() { @Override
public void onTabReselected(int position) {
Toast.makeText(getApplicationContext(), position + "", 3000)
.show();
// TODO Auto-generated method stub
pager.setCurrentItem(position);
}
}); pager.setCurrentItem(0);
indicatorView.setViewPager(pager);
indicatorView.setClickable(true); } class Myadapter extends PagerAdapter { @Override
public int getCount() {
// TODO Auto-generated method stub
return 8;
} @Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
return "--" + position + "--";
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO Auto-generated method stub
((ViewPager) container).removeViewAt(position); super.destroyItem(container, position, object);
} @Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
} @Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
ImageView imageView = new ImageView(getApplicationContext());
imageView.setImageBitmap(BitmapFactory.decodeResource(
getResources(), R.drawable.flower));
container.addView(imageView);
return imageView;
// return super.instantiateItem(container, position);
} } }
版权声明:本文博主原创文章。博客,未经同意不得转载。
最新文章
- linux发行版基础目录
- 关于tp.5.0角色管理导致的创建角色登陆报错问题解决!
- 《UML大战需求分析》阅读笔记6
- HTML5中的sessionStorage和localStorage
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- 内存中OLTP(Hekaton)里的事务日志记录
- abap 选择屏幕事件AT SELECTION-SCREEN
- Sample MultipleFileWordcount CombineFileInputFormat
- PNG图片去除额外透明区域
- C#中的预处理器指令详解
- ADB操作多台设备
- 关于使用cocoaPods,import导入时第三方库头文件没有提示问题的解决办法
- MySQL的Grant命令
- CSS实现div居中
- dotweb——go语言的一个微型web框架(三)路由注册
- ecshop循环计数
- MyBatis学习(五)resultMap测试
- springboot中使用kindeditor富文本编辑器实现博客功能
- Angular7.1.4+Typescript3.1框架学习(一)
- ASP.NET Core MVC中Controller的Action,默认既支持HttpGet,又支持HttpPost