ViewPager的使用及获取子view控件的操作(inflate)
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)相关推荐
- android view取坐标点,Android 获取子 View 的位置及坐标的方式
一.View 1.1.View 概述 视图 (View) 是一个容器,专门负责布局.表现为显示在屏幕上的各种视图,如 TextView.LinearLayout 等. 1.2.View 分类 View ...
- android 自定义控件的宽高_巧用Handler获取View控件信息
众所周知,在Android实际开发中,对于某些复杂多变的情况,控件的位置摆放.大小控制并非是xml类型的layout文件完全可以搞定的.此时,我们通常会使用Java代码来通过动态计算,将指定的控件摆放 ...
- iOS自定义View 控件自动计算size能力
iOS自定义View 控件自动计算size能力 背景 在使用 UILabel 和 UIImage 的时候,不用指定宽高约束,控件也不会报约束缺失,还可以根据内容自己确定适合的宽高,特别适合 Xib 和 ...
- 最简单也最难——如何获取到Android控件的高度,获取android控件
最简单也最难--如何获取到Android控件的高度,获取android控件 问题 如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth ...
- view类不响应自定义消息_安卓平台如何给控件添加自定义操作?
在安卓应用设计和开发过程中,设计人员为了界面简洁.有独特的交互方式,可能会为控件设计特殊的操作手势,例如消息列表中单指按住消息向左滑删除消息:系统顶部的通知单指向左滑可以关闭通知等. 这些操作对于普通 ...
- Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件(转)
一.概述 在App中,经常会出现侧滑菜单,侧滑滑出View等效果,虽然说Android有很多第三方开源库,但是实际上 咱们可以自己也写一个自定义的侧滑View控件,其实不难,主要涉及到以下几个要点: ...
- 安卓中自定义view控件代替radiogroup实现颜色渐变效果的写法
利用自定义控件代替radiogroup,同时实现在使用viewpager进行翻页的时候,实现颜色渐变的效果. 一: 首先创建一个自定义view类继承自View类,所有的控件均用canvas绘制出来(包 ...
- 《Windows程序设计》读书笔九 子窗口控件
第九章 子窗口控件 子窗口可以作为控制屏幕图形显示,响应用户输入,以及在有重要输入事件的时候通知另一窗口. 标准子窗口控件,按钮,复选框,编辑框,列表框,组合框,文本字符串和滚动条. 可以使用Crea ...
- 【转】Win32子窗口控件(按钮、编辑框、静态框、滚动条等)!!
前言: 子窗口控件是特殊的子窗口,不需要我们注册窗口类,系统已经注册好了,我们只需要在创建时选择相应的窗口类名.常用的子窗口控件有按钮BUTTON.组合框COMBOBOX.编辑框EDIT.列表框LIS ...
最新文章
- 细数二十世纪最伟大的十大算法
- VTK修炼之道20:图像基本操作_图像类型转换
- Docker图形化管理工具之Portainer
- 使用cocoapods
- .NET6之MiniAPI(二十一):限流
- python+selenium之自动生成excle,保存到指定的目录下
- 关于NavigateUrl中绑定Eval()方法时出现服务器标记的格式不正确的解决方法
- ubuntu16安装pymesh2的方法
- PostgreSQL高可用性、负载均衡、复制与集群方案介绍
- Anaconda+django写出第一个web app(五)
- Python-argparse库基本使用方法和add_argument() 参数详解
- SpringBoot系列 - 集成JWT实现接口权限认证
- 阿里云-视频点播服务API调用
- 富文本编辑器 —— 学习笔记
- linux tomcat cpu占用高,排查tomcat服务器CPU使用率过高
- 六十星系之01紫微独坐子午
- 华为网络工程师项目模拟
- Drone CI/CD系列(二)——python语言之配置.drone.yml文件
- 计算机应用能力提升,大学生计算机应用能力提升路径
- 不写默认无参构造方法,调用自定义构造方法时报错No constructor found in com...
热门文章
- Java技术之AQS详解
- [Python机器学习]Nagel-Schreckenberg(交通流)模型
- 工控 组态王6.60 SP3软件7.5 SP4 授权软件狗 USB 硬件狗 分享 下载
- jQuery参考手册
- 基于控制主题的对话生成 相关论文总结
- 开源者的自我修养|为 ShardingSphere 贡献了千万行代码的程序员,后来当了 CEO...
- Vue 实现 Hover 功能( mouseover 与 mouseenter 的区别)
- 2015网易游戏校园招聘笔试题 研发岗
- APF有源电力滤波器Simulink仿真
- NOKOV度量动作捕捉用于多智能体协同系统等效验证实验