android 仿真翻页实现上如何同时实现左右翻页和底部菜单

&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
BottomNavigationView + ViewPager + Fragment 实现左右滑动和下方导航栏
摘要:转载请注明出处:http://blog.csdn.net/htwhtw123/article/details/比较简单的用BottomNavigationView、ViewPager、Fragment实现下方导航栏与上方可翻页页面,页面布局和逻辑在自定义的Fragment类中自行定义。点击这里跳转源码(注意,所有项目中所有Fragment都是导入:importandroid.support.v4.app.F)(注意:BottomNavigati
转载请注明出处:http://blog.csdn.net/htwhtw123/article/details/ 比较简单的用BottomNavigationView 、 ViewPager 、 Fragment 实现下方导航栏与上方可翻页页面,页面布局和逻辑在自定义的Fragment类中自行定义。点击这里跳转源码 (注意,所有项目中所有Fragment都是导入:import android.support.v4.app.F) (注意:BottomNavigationView如果是新建项目想要引入的话,可以在创建项目的时候自动生成(新建项目时,选下图的一个activity),无需再看下面的1~4步骤)
(还有,新建活动也可以自动生成带有BottomNavigationView 的Activity,如下方式去新建活动):
(可以通过如上两种方式非常快速的完成对BottomNavigationView相关代码编写,但是请不要有BottomNavigationView所需的同名文件,否则因报错而无法生成。) 下面讲解一下纯手写非自动生成的方法:
ctrl+alt+shift+s 打开project struct-&点击右上 Dependencies-&点击最右侧“+”符号-&点击Library dependency-&搜索栏输入design-&选择以com.android开头的一项,点击OK。现在的导入的是下面的版本:
(采用这种方法而不是去build.gradle粘代码后同步,导入的会一直是最新版本的库。还有,一般android的库都是以com.android开头的)
2.创建导航栏图标
(也可以在网上自寻找png图片,因为只会显示点中和没有点中两种颜色,挑选时只需要注意形状即可,颜色会失效) 右击drawable文件夹-&New-&Vector Asset-&点击下面圈出来的地方就可以选择图片。-&选好后OK,next,finish就可以生成图片
3.设置导航栏子项
在res文件夹下新建menu文件夹,在menu中新建文navigation.xml:右击menu-&new-&Menu Resource,添加导航栏子项,从前到后依次会是导航栏从左到右的子项。
下面是完整代码 &?xml version=&1.0& encoding=&utf-8&?&&menu xmlns:android=&http://schemas.android.com/apk/res/android&& &item android:id=&@+id/navigation_home& android:icon=&@drawable/ic_home_black_24dp& android:title=&@string/title_home&/& &item android:id=&@+id/navigation_dashboard& android:icon=&@drawable/ic_dashboard_black_24dp& android:title=&@string/title_dashboard&/& &item android:id=&@+id/navigation_notifications& android:icon=&@drawable/ic_notifications_black_24dp& android:title=&@string/title_notifications&/& &item android:id=&@+id/navigation_notifications2& android:icon=&@drawable/ic_settings_black_24dp& android:title=&@string/title_notifications&/&&/menu&
item属性讲解: id属性是必要的,需要在点击监听时时使用;android:icon是图标,同一时间只会显示一种颜色,选中和未选中是两种颜色;android:title是会在图标下显示的字,默认情况只有选中项的字才会显示。
这种情况,我喜欢用LinearLayout,上方的ViewPager占满剩余屏幕(android:layout_weight=”1”),下方BottomNavigationView 高度为wrap_content。下面是Activity的布局文件。app:menu=”@menu/navigation”将刚刚写的子项定义文件加载进来,android:background=”?android:attr/windowBackground”的效果是:当BottomNavigationView与上方内容同色时,会显示的一条分割线,如下图中部。
&?xml version=&1.0& encoding=&utf-8&?&&LinearLayout xmlns:android=&http://schemas.android.com/apk/res/android& xmlns:app=&http://schemas.android.com/apk/res-auto& android:layout_width=&match_parent& android:layout_height=&match_parent& android:orientation=&vertical&& &android.support.v4.view.ViewPager android:id=&@+id/view_pager& android:layout_width=&match_parent& android:layout_weight=&1& android:layout_height=&0dp&/& &android.support.design.widget.BottomNavigationView android:id=&@+id/navigation& android:layout_width=&match_parent& android:layout_height=&wrap_content& android:background=&?android:attr/windowBackground& app:menu=&@menu/navigation&/&&/LinearLayout&
现在BottomNavigationView已经可以成功显示在Activity中了。下面介绍ViewPager初始化。
5.为ViewPager创建适配器
因为要添加的页面是Fragment所以让MyFragment继承FragmentPagerAdapter。listFragment用来存储显示页面对象。 (注意,项目中所有Fragment都是如下导入:import android.support.v4.app.Fragment,不要导入另一种), class MyFragAdapter extends FragmentPagerAdapter { C List&Fragment& listF public MyFragAdapter(FragmentManager fm, Context context, List&Fragment& listFragment) { super(fm); this.context = this.listFragment = listF } @Override public Fragment getItem(int position) { return listFragment.get(position); } @Override public int getCount() { return listFragment.size(); }
6.为ViewPager准备显示的Fragment页面
这里写一个例子。 首先是准备Fragment的布局,这里没有限制,根据需要自己写就行,为了举个Fragment中控件使用的简单例子,我加了一个按钮。下面是frag1.xml的代码: &?xml version=&1.0& encoding=&utf-8&?&&LinearLayout xmlns:android=&http://schemas.android.com/apk/res/android& android:layout_width=&match_parent& android:layout_height=&match_parent&& &TextView android:layout_width=&wrap_content& android:layout_height=&wrap_content& android:text=&frag1& android:textSize=&30sp&/& &Button android:id=&@+id/bt& android:layout_width=&wrap_content& android:layout_height=&wrap_content& android:text=&Fragment中的按钮& android:textAllCaps=&false&/&&/LinearLayout&
然后下面是加载这个布局的Fragment1.java中的代码,获取context使用getActivity()方法。通过获取的view,使用view.findViewById()可以获取控件的对象。 public class Fragment1 extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag1, container, false); Button bt = (Button) view.findViewById(R.id.bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getActivity(), &Fragment1上的按钮被点击了&, Toast.LENGTH_SHORT).show(); } }); }}
关于使用碎片踩过一些坑,有兴趣的朋友可以看一下:Android 碎片使用的一些坑 之后我与之上相似的又写了3个Fragment。
7.活动中的代码逻辑
终于到最重要的地方了但是依旧简单,这里将ViewPager和BottomNavigationView 关联到一起的思想就是:监听他们的点击或滑动事件,然后将对方设置成滑动到相应界面或相应子项被点下的状态。下面是代码: ViewPager viewP BottomNavigationV//底部导航栏对象 List&Fragment& listF//存储页面对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView();//初始化 } private void initView() { viewPager = (ViewPager) findViewById(R.id.view_pager); navigation = (BottomNavigationView) findViewById(R.id.navigation); //向ViewPager添加各页面 listFragment = new ArrayList&&(); listFragment.add(new Fragment1()); listFragment.add(new Fragment2()); listFragment.add(new Fragment3()); listFragment.add(new Fragment4()); MyFragAdapter myAdapter = new MyFragAdapter(getSupportFragmentManager(), this, listFragment); viewPager.setAdapter(myAdapter); //导航栏点击事件和ViewPager滑动事件,让两个控件相互关联 navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { //这里设置为:当点击到某子项,ViewPager就滑动到对应位置 switch (item.getItemId()) { case R.id.navigation_home: viewPager.setCurrentItem(0); case R.id.navigation_dashboard: viewPager.setCurrentItem(1); case R.id.navigation_notifications: viewPager.setCurrentItem(2); case R.id.navigation_setting: viewPager.setCurrentItem(3); default: } } }); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) {// 当滑动到某一位置,导航栏对应位置被按下 navigation.getMenu().getItem(position).setChecked(true); //这里使用navigation.setSelectedItemId(position);无效, //setSelectedItemId(position)的官网原句:Set the selected // menu item ID. This behaves the same as tapping on an item //未找到原因 } @Override public void onPageScrollStateChanged(int state) { } }); }}
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
邮箱低至5折
推荐购买再奖现金,最高25%
&200元/3月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
BottomNavigationView + ViewPager + Fragment 实现左右滑动和下方导航栏相关信息,包括
的信息,所有BottomNavigationView + ViewPager + Fragment 实现左右滑动和下方导航栏相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International22.8k 次阅读
标签:至少1个,最多5个
底部导航栏目前基本上每个app必备的。一般放到首页的,来显示app整个内容的框架。
实现导航栏的五种方式
如上图导航栏上显示的,这里面我总结了这几种,下面会就这几种方式一一记录到文章中。如果写到一篇里估计有点多,还条例不怎么清晰。接下来会记录这几篇文章。其中TabHost这种方法比较老,就不再记录了。
这个Demo里还同时使用了, , , , 有需要的也可以点进去查看。
0 收藏&&|&&14
你可能感兴趣的文章
你可能感兴趣的文章
分享到微博?
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。问:电脑桌面设置电脑屏幕最下面的排图标显示在屏幕右侧怎么办答:若xp系统,拖下来即可,若系统,可右击任务栏-属-屏幕务栏位置(T):点击右边的三角箭头,出的对话框选择“底部”确定。
问:android.的底部菜单如何实现android.版本没有了底部菜单的功能,但是如果要是实现相同的功能该怎么做呢,...答:自己顶下—已经解决了问题,通过PopupWindow可以实现在界面任意位置出窗口,加上animation效果和menu样。
问:关于小米前两天看到小米被疯的报道。它是那个出品的?有什么特征?和iPhone有...答:小米小米是小米(全称小米科技有限责任)专为发烧友级控打造的款高品质智能。雷是小米的兼CEO。ID设计全部由小米...
问:JQuery开发出于人化设置要出个框框给予个提示...登陆成功后给出个提示框提示上次的登陆时间并且建议怎么怎么做提示框的...答:给我发,我给你发例子 q
问:下大盘肯定会回调来确认底部吗?是持股?还是出?还是补...答:回踩是肯定的,可逢低加仓,后将有定震幅。
问:可以正常登陆,但是打开人对话框,对话框就会出现在底部...答:网页贴吧知道 MP图片百科文库&电脑/网络&软件&办公软件可以正常登陆,但是打开人对话框,对话框就会出现在底部任务栏中无法出...
问:任务栏跑到右边去了。怎么调回去答:鼠标在任务栏上右击出菜单,选择“属”,然后在“属”对话框中的“屏幕上的任务栏位置”选择“底部”,确定后任务栏就返回到电脑底部了。
问:如何用ja出自己的对话框用showMessage.想看下完整的程序答:import ja.awt.BorderLimport ja.awt.Cimport ja.awt.event.ActionEimport ja.awt.event.ActionLimport jax.swing....
问:页面自动跳到底部及文本框中的光标狂跑是什么问题?有时打开个网页页面的时候,页面出来后立即跳到底部,怎么拖动右边的滑条也上...答:这是个常见现象.这与你的网速以及你所浏览的网页有关.目前没有什么解决的办法.但你这决不是病.
问:mx升级到OS.后,不能连接电脑,而且双击home键无效,不能...答:Flyme.X系统下,从Home键左右两侧滑动即可调出多任务管理器,向下拖拽即是全部关闭,选择某个程序上滑即可关闭。魅族MX全新Flyme.固件下,采用MTP...
问:Ja-HTML搜索框.想在HTML页面上加入搜索框,进行站内搜索,效果是搜索框提示词点击后消失,可...答:.你直接把里面的码放入里就可以了.然后页面调用这个JS.笨方法就是将上面JS里的语句再遍,把对象名字变下别原来的.var s=document....
问:android怎么通过按钮出时间设置答:那个要看你用的什么桌面啊。说adw桌面的方式:长摁住桌面秒,自定义,选择动作,动作列表,设置(点设置左边那个小箭头,可以拉开其他子菜单的),里面选择...
问:能不能在BLOG中添加更的从底部出的小窗口啊?答:从底部出的小窗口码:第步:首先你在你桌面上鼠标右键点下--文本文档,然后把下面码过去,再把里面的文字修改成你自己想要的文字!修改完后点...
问:android如何使底部菜单在出时显示在tab的上方(覆盖掉tab...答:自己定义个、布然后拦截menu出就可以了自定义menu步骤:)覆写onCreateOptionsMenu(),返回值改为false public boolean onCreateOptionsMenu(Menu...
09-1309-0408-2308-21
08-2808-2808-2808-28
◇本站云标签怎样把android手机的主菜单切换成左右翻页的?
按时间排序
你可以安装一个桌面软件代替原有的桌面,设定水平翻页,ADW桌面(不知道非CM系统能不能运行,没试过),GO桌面等都可以实现。
就是输入文字的时候,左边是不是有一个向上的箭头,点击一下,就有语音的选项了,哈哈
要要 切克闹
下载一个桌面软件比如go桌面就可以啦
安卓手机正面一般有个前置摄像头,旁边还有一个距离感应器,播放语音的时候按住那个距离感应器,就自动变成听筒模式了,但是放开又会成外放,我的是这样的,自己摸索出来的!
模拟键盘上有一个键盘的键,点一下,选择
您好,亲爱的管家用户请您反馈我以下信息:1.您的手机机型和系统版本2.您安装的腾讯手机管家版本(精确到Build号)3.在拨号键盘输入*#06# 弹出的IMEI号在收到您的信息反馈后,我们会尽快回复您感谢您对腾讯手机管家的支持!
感谢您为社区的和谐贡献力量请选择举报类型
经过核实后将会做出处理感谢您为社区和谐做出贡献
确定要取消此次报名,退出该活动?
请输入私信内容:Android ViewPager实现左右滑动翻页效果
转载 &更新时间:日 14:01:12 & 作者:富江伽椰子
这篇文章主要为大家详细介绍了Android ViewPager实现左右滑动翻页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了ViewPager实现左右滑动翻页效果展示的具体代码,供大家参考,具体内容如下
代码如下:
package com.example.
import java.util.ArrayL
import android.app.A
import android.content.C
import android.os.B
import android.support.v4.view.PagerA
import android.support.v4.view.ViewP
import android.view.V
import android.view.ViewG
import android.widget.TextV
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager mViewPager=(ViewPager) findViewById(R.id.viewPager);
PagerAdapter mPagerAdapter=new MyPagerAdapter(this);
mViewPager.setAdapter(mPagerAdapter);
private class MyPagerAdapter extends PagerAdapter{
private ArrayList&TextView&
public MyPagerAdapter(Context context){
this.context=
views=new ArrayList&TextView&();
for(int i=0;i&30;i++){
TextView tv=new TextView(context);
tv.setText(""+i);
views.add(tv);
public int getCount() {
return views.size();
public void destroyItem(ViewGroup container, int position,Object object) {
container.removeView(views.get(position));
public View instantiateItem(ViewGroup container, int position){
((ViewGroup) container).addView(views.get(position));
return views.get(position);
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
布局文件:
&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"
tools:context="com.example.demo.MainActivity" &
&android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"/&
&/RelativeLayout&
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 android 实现美团菜单 的文章

 

随机推荐