Step 1: 布局文件中添加viewpager和切换页面button

<span style="font-size:18px;"><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.phenix.iot_v1_tab.MainActivity" >    <android.support.v4.view.ViewPagerandroid:id="@+id/viewPagerId"android:layout_width="wrap_content"android:layout_height="wrap_content"/>     <!--  -->lay1.xml-----<LinearLayout android:id="@+id/mainBtnLinearId"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:orientation="horizontal"><Button android:id="@+id/settingCtrlPageBtnId"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:layout_alignParentBottom="true"android:gravity="center"android:text="Setting"/><Buttonandroid:id="@+id/dataStatusPageBtnId"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_weight="1"android:layout_toRightOf="@id/settingCtrlPageBtnId"android:gravity="center"android:text="Data"/><Buttonandroid:id="@+id/chartStatusPageBtnId"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_weight="1"android:layout_toRightOf="@id/dataStatusPageBtnId"android:gravity="center"android:text="Chart"/></LinearLayout></RelativeLayout></span>

注意: viewpage和button的前后关系,如果颠倒,button的单击和viewpage的滑动事件有影响,原因也不知道。

Step 2: 添加布局文件,右键res


本例中添加三个布局文件,如上图蓝框所示

Step 3: MainActivity中添加相关变量

本例中有三个切换页面按钮:set / data / chart,在set page中有一个set gain按钮

<span style="font-size:18px;">//定义ViewPager变量ViewPager pager = null;View viewPager_set;View viewPager_data;View viewPager_chart;ArrayList<View> viewContainter = new ArrayList<View>();//定义ViewPager Button变量private Button setPageBtn;private Button dataPageBtn;private Button chartPageBtn;//定义setPage中Button变量private Button setGain_setPage_Btn;</span>

在OnCreate中初始化viewpage和各相关控件

<span style="font-size:18px;">@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化ViewPagerInitViewPager();//ViewPager绑定页面滑动监听器pager.addOnPageChangeListener(new viewPagerOnPageChangeListener());//初始化ViewPager的页面切换按钮InitViewPagerSwitchBtn();//Bluetooth初始化m_BusinessBluetooth = new BlueToothProcess(this);m_BusinessBluetooth.CreatePortListen();//初始化set pageInitSetPage();//set page监听器处理setPageListenerProcess();                 }</span>

step 4: 初始化viewpager控件具体代码

<span style="font-size:18px;">/** 初始化ViewPager*/public void InitViewPager() {//实例化ViewPagerpager = (ViewPager)findViewById(R.id.viewPagerId);      //为viewPager设置内容//view是我们放进viewPager里面的东西,要为它设置好布局,再放进去viewPager_set = LayoutInflater.from(this).inflate(R.layout.setting_control, null);viewPager_data = LayoutInflater.from(this).inflate(R.layout.data_status, null);viewPager_chart = LayoutInflater.from(this).inflate(R.layout.chart_status, null);//这是个ArrayList,加进去了3个viewviewContainter.add(viewPager_set);viewContainter.add(viewPager_data);viewContainter.add(viewPager_chart);        //设置适配器pager.setAdapter(new PagerAdapter() {@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stub//return false;return arg0 == arg1;}//viewpager中的组件数量@Overridepublic int getCount() {// TODO Auto-generated method stubreturn viewContainter.size();}@Overridepublic void destroyItem(View container, int position, Object object) {// TODO Auto-generated method stub//super.destroyItem(container, position, object);((ViewPager)container).removeView(viewContainter.get(position));}@Overridepublic int getItemPosition(Object object) {// TODO Auto-generated method stubreturn super.getItemPosition(object);               }@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stub//return super.instantiateItem(container, position);((ViewPager)container).addView(viewContainter.get(position));return viewContainter.get(position);}});}</span>

step 5: viewpager页面滑动监听器代码

<span style="font-size:18px;">/** ViewPager页面滑动监听器*/class viewPagerOnPageChangeListener implements OnPageChangeListener{@Overridepublic void onPageSelected(int pItem) {// TODO Auto-generated method stubswitch (pItem) {//如果是第一个页面case 0:setPageBtn.setText("V");dataPageBtn.setText("Data");chartPageBtn.setText("Chart");System.out.println("Set Page");break;//如果是第二个页面case 1:setPageBtn.setText("Set");dataPageBtn.setText("V");chartPageBtn.setText("Chart");System.out.println("Data Page");break;//如果是第三个页面case 2:setPageBtn.setText("Set");dataPageBtn.setText("Data");chartPageBtn.setText("V");System.out.println("Chart Page");break;}}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}}</span>

Step 6: 页面切换按钮功能实现

<span style="font-size:18px;">/*** 初始化ViewPager切换按钮*/public void InitViewPagerSwitchBtn() {//绑定控件IDsetPageBtn = (Button)this.findViewById(R.id.settingCtrlPageBtnId);dataPageBtn = (Button)this.findViewById(R.id.dataStatusPageBtnId);chartPageBtn = (Button)this.findViewById(R.id.chartStatusPageBtnId);//设置按钮跳转到对应的viewPager页面setPageBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubpager.setCurrentItem(0);System.out.println("SettingPage");Toast toast= Toast.makeText(getApplicationContext(), "测试", Toast.LENGTH_SHORT);toast.show();             }});dataPageBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubpager.setCurrentItem(1);System.out.println("DataPage");}});chartPageBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubpager.setCurrentItem(2);System.out.println("ChartPage");}});    }</span>

step 7: 获取子view中的控件(set gain button)并绑定对应操作监听器

<span style="font-size:18px;">/** 初始化set page*/public void InitSetPage() {//获取setting view buttonsetGain_setPage_Btn = (Button)viewPager_set.findViewById(R.id.setGainBtnId);}/** set page监听器绑定*/public void setPageListenerProcess() {setGain_setPage_Btn.setOnClickListener(new setGainBtnSetPageOnClickListener());}/** set page * set gain button listener*/class setGainBtnSetPageOnClickListener implements OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubToast toast= Toast.makeText(getApplicationContext(), "view测试", Toast.LENGTH_SHORT);toast.show();}}</span>

获取子view控件的方法重点讲一下:

首先通过inflate得到各个子view的对象

View viewPager_set = LayoutInflater.from(this).inflate(R.layout.setting_control, null);   //setting_control就是step2中添加的子view布局文件的名称

然后通过子view对象,获取其内的控件ID

Button setGain_setPage_Btn = (Button)viewPager_set.findViewById(R.id.setGainBtnId);

参考文章:

viewpager的使用 http://blog.csdn.net/phenixyf/article/details/51280690

获取子view控件的操作 http://blog.csdn.net/phenixyf/article/details/51396570

ViewPager的使用及获取子view控件的操作(inflate)相关推荐

  1. android view取坐标点,Android 获取子 View 的位置及坐标的方式

    一.View 1.1.View 概述 视图 (View) 是一个容器,专门负责布局.表现为显示在屏幕上的各种视图,如 TextView.LinearLayout 等. 1.2.View 分类 View ...

  2. android 自定义控件的宽高_巧用Handler获取View控件信息

    众所周知,在Android实际开发中,对于某些复杂多变的情况,控件的位置摆放.大小控制并非是xml类型的layout文件完全可以搞定的.此时,我们通常会使用Java代码来通过动态计算,将指定的控件摆放 ...

  3. iOS自定义View 控件自动计算size能力

    iOS自定义View 控件自动计算size能力 背景 在使用 UILabel 和 UIImage 的时候,不用指定宽高约束,控件也不会报约束缺失,还可以根据内容自己确定适合的宽高,特别适合 Xib 和 ...

  4. 最简单也最难——如何获取到Android控件的高度,获取android控件

    最简单也最难--如何获取到Android控件的高度,获取android控件 问题 如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth ...

  5. view类不响应自定义消息_安卓平台如何给控件添加自定义操作?

    在安卓应用设计和开发过程中,设计人员为了界面简洁.有独特的交互方式,可能会为控件设计特殊的操作手势,例如消息列表中单指按住消息向左滑删除消息:系统顶部的通知单指向左滑可以关闭通知等. 这些操作对于普通 ...

  6. Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件(转)

    一.概述 在App中,经常会出现侧滑菜单,侧滑滑出View等效果,虽然说Android有很多第三方开源库,但是实际上 咱们可以自己也写一个自定义的侧滑View控件,其实不难,主要涉及到以下几个要点: ...

  7. 安卓中自定义view控件代替radiogroup实现颜色渐变效果的写法

    利用自定义控件代替radiogroup,同时实现在使用viewpager进行翻页的时候,实现颜色渐变的效果. 一: 首先创建一个自定义view类继承自View类,所有的控件均用canvas绘制出来(包 ...

  8. 《Windows程序设计》读书笔九 子窗口控件

    第九章 子窗口控件 子窗口可以作为控制屏幕图形显示,响应用户输入,以及在有重要输入事件的时候通知另一窗口. 标准子窗口控件,按钮,复选框,编辑框,列表框,组合框,文本字符串和滚动条. 可以使用Crea ...

  9. 【转】Win32子窗口控件(按钮、编辑框、静态框、滚动条等)!!

    前言: 子窗口控件是特殊的子窗口,不需要我们注册窗口类,系统已经注册好了,我们只需要在创建时选择相应的窗口类名.常用的子窗口控件有按钮BUTTON.组合框COMBOBOX.编辑框EDIT.列表框LIS ...

最新文章

  1. 细数二十世纪最伟大的十大算法
  2. VTK修炼之道20:图像基本操作_图像类型转换
  3. Docker图形化管理工具之Portainer
  4. 使用cocoapods
  5. .NET6之MiniAPI(二十一):限流
  6. python+selenium之自动生成excle,保存到指定的目录下
  7. 关于NavigateUrl中绑定Eval()方法时出现服务器标记的格式不正确的解决方法
  8. ubuntu16安装pymesh2的方法
  9. PostgreSQL高可用性、负载均衡、复制与集群方案介绍
  10. Anaconda+django写出第一个web app(五)
  11. Python-argparse库基本使用方法和add_argument() 参数详解
  12. SpringBoot系列 - 集成JWT实现接口权限认证
  13. 阿里云-视频点播服务API调用
  14. 富文本编辑器 —— 学习笔记
  15. linux tomcat cpu占用高,排查tomcat服务器CPU使用率过高
  16. 六十星系之01紫微独坐子午
  17. 华为网络工程师项目模拟
  18. Drone CI/CD系列(二)——python语言之配置.drone.yml文件
  19. 计算机应用能力提升,大学生计算机应用能力提升路径
  20. 不写默认无参构造方法,调用自定义构造方法时报错No constructor found in com...

热门文章

  1. Java技术之AQS详解
  2. [Python机器学习]Nagel-Schreckenberg(交通流)模型
  3. 工控 组态王6.60 SP3软件7.5 SP4 授权软件狗 USB 硬件狗 分享 下载
  4. jQuery参考手册
  5. 基于控制主题的对话生成 相关论文总结
  6. 开源者的自我修养|为 ShardingSphere 贡献了千万行代码的程序员,后来当了 CEO...
  7. Vue 实现 Hover 功能( mouseover 与 mouseenter 的区别)
  8. 2015网易游戏校园招聘笔试题 研发岗
  9. APF有源电力滤波器Simulink仿真
  10. NOKOV度量动作捕捉用于多智能体协同系统等效验证实验