Android ViewPager放入多个XML如何监听其的控件
aiqing0119的专栏
- 目录视图
- 摘要视图
- 订阅
我在一个Activity里面加入了ViewPager。 ViewPager里面放了两个XML。XML里面有几个TextView控件。我想在这个Activity里面加入ViewPager中XML里面的控件监听,并且响应点击TextView之后弹出提示框的事件。但是却一直苦于无法通过findById()方法绑定该TextView控件。因为普通情况下一个Activity只能通过setContentView(R.layout.XXXX)绑定显示一个XML,只能对那一个XML里面的控件进行操作。而我放在ViewPager里面的XML中的控件是不能直接拿出来做操作的。跪求各位高手指出一条明路.......<源码奉上,求各位高手帮忙解决一下,谢谢了!>
唯一一个Activity:
- package com.demo;
- import java.util.ArrayList;
- import java.util.List;
- import android.graphics.BitmapFactory;
- import android.graphics.Matrix;
- import android.os.Bundle;
- import android.os.Parcelable;
- import android.support.v4.app.FragmentActivity;
- import android.support.v4.view.PagerAdapter;
- import android.support.v4.view.ViewPager;
- import android.support.v4.view.ViewPager.OnPageChangeListener;
- import android.util.DisplayMetrics;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.animation.Animation;
- import android.view.animation.TranslateAnimation;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
- /**
- * Tab页面手势滑动切换以及动画效果
- *
- * @author D.Winter
- *
- */
- public class MainActivity extends FragmentActivity {
- // ViewPager是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换。
- // android-support-v4.jar
- private ViewPager mPager;//页卡内容
- private List<View> listViews; // Tab页面列表
- private ImageView cursor;// 动画图片
- private TextView t1, t2, t3,t4;// 页卡头标
- private int offset = 0;// 动画图片偏移量
- private int currIndex = 0;// 当前页卡编号
- private int bmpW;// 动画图片宽度
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- InitImageView();
- InitTextView();
- InitViewPager();
- }
- /**
- * 初始化头标
- */
- private void InitTextView() {
- t1 = (TextView) findViewById(R.id.text1);
- t2 = (TextView) findViewById(R.id.text2);
- t3 = (TextView) findViewById(R.id.text3);
- t4 = (TextView) findViewById(R.id.text4);
- t1.setOnClickListener(new MyOnClickListener(0));
- t2.setOnClickListener(new MyOnClickListener(1));
- t3.setOnClickListener(new MyOnClickListener(2));
- t4.setOnClickListener(new MyOnClickListener(3));
- }
- /**
- * 初始化ViewPager
- */
- private void InitViewPager() {
- mPager = (ViewPager) findViewById(R.id.vPager);
- listViews = new ArrayList<View>();
- LayoutInflater mInflater = getLayoutInflater();
- listViews.add(mInflater.inflate(R.layout.lay1, null));
- listViews.add(mInflater.inflate(R.layout.lay2, null));
- listViews.add(mInflater.inflate(R.layout.lay3, null));
- listViews.add(mInflater.inflate(R.layout.lay4, null));
- mPager.setAdapter(new MyPagerAdapter(listViews));
- mPager.setCurrentItem(0);
- mPager.setOnPageChangeListener(new MyOnPageChangeListener());
- }
- /**
- * 初始化动画
- */
- private void InitImageView() {
- cursor = (ImageView) findViewById(R.id.cursor);
- bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a)
- .getWidth();// 获取图片宽度
- DisplayMetrics dm = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(dm);
- int screenW = dm.widthPixels;// 获取分辨率宽度
- offset = (screenW / 4 - bmpW) / 3+23;// 计算偏移量
- Matrix matrix = new Matrix();
- matrix.postTranslate(offset, 0);
- cursor.setImageMatrix(matrix);// 设置动画初始位置
- }
- /**
- * ViewPager适配器
- */
- public class MyPagerAdapter extends PagerAdapter {
- public List<View> mListViews;
- public MyPagerAdapter(List<View> mListViews) {
- this.mListViews = mListViews;
- }
- @Override
- public void destroyItem(View arg0, int arg1, Object arg2) {
- ((ViewPager) arg0).removeView(mListViews.get(arg1));
- }
- @Override
- public void finishUpdate(View arg0) {
- }
- @Override
- public int getCount() {
- return mListViews.size();
- }
- @Override
- public Object instantiateItem(View arg0, int arg1) {
- ((ViewPager) arg0).addView(mListViews.get(arg1), 0);
- return mListViews.get(arg1);
- }
- @Override
- public boolean isViewFromObject(View arg0, Object arg1) {
- return arg0 == (arg1);
- }
- @Override
- public void restoreState(Parcelable arg0, ClassLoader arg1) {
- }
- @Override
- public Parcelable saveState() {
- return null;
- }
- @Override
- public void startUpdate(View arg0) {
- }
- }
- /**
- * 头标点击监听
- */
- public class MyOnClickListener implements View.OnClickListener {
- private int index = 0;
- public MyOnClickListener(int i) {
- index = i;
- }
- @Override
- public void onClick(View v) {
- mPager.setCurrentItem(index);
- }
- };
- /**
- * 页卡切换监听
- */
- public class MyOnPageChangeListener implements OnPageChangeListener {
- int one = offset * 2 + bmpW;// 页卡1 -> 页卡2 偏移量
- int two = one * 2;// 页卡1 -> 页卡3 偏移量
- int three = one * 3;//页卡1->页卡4偏移量
- @Override
- public void onPageSelected(int arg0) {
- Animation animation = null;
- switch (arg0) {
- case 0:
- if (currIndex == 1) {
- animation = new TranslateAnimation(one, 0, 0, 0);
- } else if (currIndex == 2) {
- animation = new TranslateAnimation(two, 0, 0, 0);
- }else if (currIndex == 3) {
- animation = new TranslateAnimation(three, 0, 0, 0);
- }
- break;
- case 1:
- if (currIndex == 0) {
- animation = new TranslateAnimation(offset, one, 0, 0);
- } else if (currIndex == 2) {
- animation = new TranslateAnimation(two, one, 0, 0);
- } else if (currIndex == 3) {
- animation = new TranslateAnimation(three, one, 0, 0);
- }
- break;
- case 2:
- if (currIndex == 0) {
- animation = new TranslateAnimation(offset, two, 0, 0);
- } else if (currIndex == 1) {
- animation = new TranslateAnimation(one, two, 0, 0);
- } else if (currIndex == 3) {
- animation = new TranslateAnimation(three, two, 0, 0);
- }
- break;
- case 3:
- if (currIndex == 0) {
- animation = new TranslateAnimation(offset, three, 0, 0);
- } else if (currIndex == 1) {
- animation = new TranslateAnimation(one, three, 0, 0);
- } else if (currIndex == 2) {
- animation = new TranslateAnimation(two, three, 0, 0);
- }
- break;
- }
- currIndex = arg0;
- animation.setFillAfter(true);// True:图片停在动画结束位置
- animation.setDuration(300);
- cursor.startAnimation(animation);
- }
- @Override
- public void onPageScrolled(int arg0, float arg1, int arg2) {
- }
- @Override
- public void onPageScrollStateChanged(int arg0) {
- }
- }
- //提示框
- public void DisplayToast(String str) {
- Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:umadsdk="http://schemas.android.com/apk/res/com.LoveBus"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <LinearLayout
- android:id="@+id/linearLayout1"
- android:layout_width="fill_parent"
- android:layout_height="60.0dip"
- android:background="#FFFFFF" >
- <TextView
- android:id="@+id/text1"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_weight="1.0"
- android:gravity="center"
- android:text="第一页"
- android:textColor="#000000"
- android:textSize="22.0dip" />
- <TextView
- android:id="@+id/text2"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_weight="1.0"
- android:gravity="center"
- android:text="第二页"
- android:textColor="#000000"
- android:textSize="22.0dip" />
- <TextView
- android:id="@+id/text3"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_weight="1.0"
- android:gravity="center"
- android:text="第三页"
- android:textColor="#000000"
- android:textSize="22.0dip" />
- <TextView
- android:id="@+id/text4"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_weight="1.0"
- android:gravity="center"
- android:text="第四页"
- android:textColor="#000000"
- android:textSize="22.0dip" />
- </LinearLayout>
- <ImageView
- android:id="@+id/cursor"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:scaleType="matrix"
- android:src="@drawable/a" />
- <LinearLayout
- android:id="@+id/linearLayout2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" >
- <android.support.v4.view.ViewPager
- android:id="@+id/vPager"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="#000000"
- android:flipInterval="30"
- android:persistentDrawingCache="animation" >
- </android.support.v4.view.ViewPager>
- </LinearLayout>
- </LinearLayout>
- 以下分别是ViewPager里面放置的四个XML布局。用来在Mian.XML里面展示。
- lay1.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"
- android:background="#158684"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/textView_00"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text=""
- android:textSize="35.0dip"
- android:textAppearance="?android:attr/textAppearanceLarge" />
- <LinearLayout
- android:id="@+id/linearLayout1"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <LinearLayout
- android:id="@+id/linearLayout_diancai"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:background="#FFFFFF"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/diancai_text1"
- android:layout_width="fill_parent"
- android:layout_height="65dp"
- android:gravity="center"
- android:text="@string/drinks"
- android:textColor="#000000"
- android:textSize="20.0dip" />
- <TextView
- android:id="@+id/diancai_text2"
- android:layout_width="fill_parent"
- android:layout_height="65dp"
- android:gravity="center"
- android:text="@string/coffee"
- android:textColor="#000000"
- android:textSize="20.0dip" />
- <TextView
- android:id="@+id/diancai_text3"
- android:layout_width="fill_parent"
- android:layout_height="65dp"
- android:gravity="center"
- android:text="@string/salad"
- android:textColor="#000000"
- android:textSize="20.0dip" />
- <TextView
- android:id="@+id/diancai_text4"
- android:layout_width="fill_parent"
- android:layout_height="65dp"
- android:gravity="center"
- android:text="@string/pizza"
- android:textColor="#000000"
- android:textSize="20.0dip" />
- <TextView
- android:id="@+id/diancai_text5"
- android:layout_width="fill_parent"
- android:layout_height="65dp"
- android:gravity="center"
- android:text="@string/dessert"
- android:textColor="#000000"
- android:textSize="20.0dip" />
- <TextView
- android:id="@+id/diancai_text6"
- android:layout_width="fill_parent"
- android:layout_height="65dp"
- android:gravity="center"
- android:text="@string/wine"
- android:textColor="#000000"
- android:textSize="20.0dip" />
- </LinearLayout>
- </LinearLayout>
- </LinearLayout>
- lay2.xml--------------------
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="#FF8684" >
- </LinearLayout>
- lay3.xml--------------------
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:background="#1586FF" >
- </LinearLayout>
- lay4.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"
- android:orientation="vertical"
- android:background="#158684">
- </LinearLayout>
- 全部代码如上。我现在想要在Activity里面监听lay1.xml里面的TextView。实现点击之后弹出提示框的效果... 请问应该怎么处理呢。
解决方法
/**
* 初始化数据
*/
@Override
public Object instantiateItem(View container, int position) {
image=new ImageView(IndexActivity.this);
image.setScaleType(ScaleType.FIT_XY);
image.setId(vp_image_id);//在这里设置id
image.setOnClickListener(new ViewpageOnClickListener(position)); //在这里添加时间 并把索引弄过去
url=aAdList.optJSONObject(position).optString(K.bean.aAdItem.bUrl_s);
ImageLoadStackManage.getInstance().loadImage(url, image);
((ViewPager) container).addView(image);
return image;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
- 上一篇Android自定义View实现HTML图文环绕效果
- 下一篇listview设置
- 主题推荐
- viewpagerandroidxml控件
- 猜你在找
- Apple Watch开发入门
- C语言及程序设计提高
- 反编译Android应用
- Struts实战-使用SSH框架技术开发学籍管理系统
- 网络赚钱靠谱项目推荐
- android view的xml属性
- opencv基本图像处理添加滑动条trackbar
- 在代码中动态绑定TabHost内容的两种方法Android
- AndroidUI更新方法五利用AsyncTask更新UI
- 线程中的wait和notify方法
- 准备好了么? 跳吧 !更多职位尽在 CSDN JOB
-
移动-IOS开发工程师北京爱奇艺科技有限公司
|
15-30K/月我要跳槽
-
iOS开发工程师上海彩亿信息技术有限公司
|
8-15K/月我要跳槽
-
iOS人民网股份有限公司
|
12-15K/月我要跳槽
-
IOS工程师路普达网络科技(北京)有限公司
|
10-20K/月我要跳槽
- 5楼 flying_IT 2015-06-03 15:34发表 [回复]
- 怎么点击没效果呢
- 4楼 snowycarrot 2014-03-18 23:14发表 [回复]
-
再提供一种像我一样的菜鸟更容易理解的方法:
listViews.add(mInflater.inflate(R.layout.lay1, null));
不要像上面合在一起写,分开写:
View v1 = mInflater.inflate(R.layout.lay1, null);
listViews.add(v1);
然后通过v1.findViewById找到对应控件,就可以添加事件了看了fragment之后偶然灵感,与君共享!
- 3楼 晨曦软海 2014-01-17 15:09发表 [回复]
- 通过为 lay1.xml里面的TextView android:οnclick="DisplayToast" 可以实现。 但我现在任然有一个问题: 如果再lay1.xml 文件里面加入一个ListView ,可以通过findViewById找到这个listview并且为其提供adapter,但如何监听这个ListView里面每一个item 的点击事件呢?不知楼主是否遇到过?
- 2楼 doudingchenlei 2014-01-11 11:14发表 [回复]
- 解决了,谢谢
- 1楼 doudingchenlei 2014-01-10 20:32发表 [回复]
- 你好,我遇到跟你一样的问题,然后我是菜鸟,你的解决办法我有点看不懂,那个索引是什么东西?
- 用 户 名:
- Leaning_wk
- 评论内容:
核心技术类目
- 个人资料
aiqing0119- 访问:85655次
- 积分:1482
- 等级:
- 排名:第14391名
- 原创:37篇
- 转载:53篇
- 译文:19篇
- 评论:19条
- 文章搜索
- 文章分类
- android 项目进阶(59)
- android 基础部分(19)
- java 语言基础(15)
- 野史评书(4)
- 管理运维(0)
- C++学习精讲(6)
- android系统移植(0)
- 股史纵横(1)
- 经济民生(0)
- android开源项目(2)
- java开源项目(0)
- api翻译(7)
- 文章存档
- 2015年07月(1)
- 2014年09月(1)
- 2014年07月(2)
- 2014年06月(2)
- 2014年05月(33)
展开
- 阅读排行
- android的Environment类(10253)
- android 布局透明度设置(4931)
- Camera.Parameters 参数(4738)
- Android布局中ScrollView与ListView的冲突的最简单方法(listItem.measure(0, 0))(4440)
- Calling startActivity() from outside of an Activity context requires the FLA(3847)
- POI读取word转换html(3695)
- 是谁给魏延的头上安上了反骨(3525)
- 太监娶妻是干什么用的(2198)
- 周瑜正名:实非嫉贤妒能、心胸狭隘之人(2096)
- Android ViewPager放入多个XML如何监听其的控件(2036)
- 评论排行
- POI读取word转换html(5)
- Android ViewPager放入多个XML如何监听其的控件(5)
- Camera.Parameters 参数(3)
- Android布局中ScrollView与ListView的冲突的最简单方法(listItem.measure(0, 0))(2)
- android 布局透明度设置(1)
- android中类 Locale的使用(1)
- 友盟的自动更新组件(1)
- Calling startActivity() from outside of an Activity context requires the FLA(1)
- Android PendingIntent(0)
- Java基础复习笔记11基本排序算法(0)
- 推荐文章
- id="ad_frm_2" frameborder="0" scrolling="no" src="http://blog.csdn.net/common/ad.html?t=12&containerId=ad_commend&frmId=ad_frm_2" style="border-width: 0px; overflow: hidden; width: 194px; height: 200px;">
- 最新评论
- Camera.Parameters 参数
菊草叶与圆企鹅: @u012175707:我就想回复这句话,没想到有人说了
- Android ViewPager放入多个XML如何监听其的控件
flying_IT: 怎么点击没效果呢
- 友盟的自动更新组件
cocos2dx3: updateInfo.path出来是一串乱码。不会被用户吐槽么?
- android中类 Locale的使用
_LinDL: 试问Locale.CHINA和Locale.CHINESE的区别
- POI读取word转换html
qq_24719959: 请问为什么图片不能转过来
- android获取手机通讯录
zhj5979: 发现了一篇 和你这惊人的相似
- android 布局透明度设置
Kinny_Qin: 有帮助
- Camera.Parameters 参数
eking2000: @u012175707:94 94
- Calling startActivity() from outside of an Activity context requires the FLA
deng_ta: 赞
- Camera.Parameters 参数
阿博3世: 你真是闲的蛋疼, 直接google翻译的吧, 你自己读一下那些句子看通不通
- 公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告|合作伙伴|论坛反馈
- 网站客服杂志客服微博客服webmaster@csdn.net400-600-2320|北京创新乐知信息技术有限公司 版权所有|江苏乐知网络技术有限公司 提供商务支持
- 京 ICP 证 070598 号|Copyright © 1999-2014, CSDN.NET, All Rights Reserved
Android ViewPager放入多个XML如何监听其的控件相关推荐
- android ViewPager实现无限轮播和设置监听事件
ViewPager的无限轮播,主要以实现为主.代码如下 首先定义activity_viewpager.xml: <LinearLayout android:layout_width=" ...
- 【Qt】QStackedWidget:将多个窗口控件放入堆中,每次只显示一个窗口控件
1.简介 QStackedWidget可以容纳多个窗口控件,每次只显示其中一个.例如:登录页面.各种功能页面等不同时显示的窗口,可以放入QStackedWidget中. 2.demo // 创建三个页 ...
- Android监听作用,Android开发之CheckBox的简单使用与监听功能示例
本文实例讲述了Android开发之CheckBox的简单使用与监听功能.分享给大家供大家参考,具体如下: activity_main.xml android:layout_width="ma ...
- Android仿抖音加载框之两颗小球转动控件
Android仿抖音加载框之两颗小球转动控件 本篇文章已授权微信公众号 hongyangAndroid(鸿洋)独家发布. 效果图 安卓版抖音v2.5加载框: 本控件效果图: 使用方法 源码地址:And ...
- SAP UI5 进阶 - XML 视图里定义的 UI 控件,运行时实例化的技术细节剖析试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...
- 从XML文件读取数据绑定到列表控件2
ComponentArt.Web.UI控件绑定所用XML,同时用于DropDownList的绑定,XML如下: <SiteMap> <item Text="标题一&qu ...
- android datepicker 监听,Android编程之DatePicker和TimePicke简单时间监听用法分析
本文实例讲述了Android编程之DatePicker和TimePicke简单时间监听用法.分享给大家供大家参考,具体如下: DatePicker和TimePicker都是从FrameLayout派生 ...
- Android软键盘弹出和收起的监听
Android软键盘弹出和收起的监听 1.直接调用 SoftKeyboardHelper softKeyboardHelper = softKeyboardHelper = new SoftKeybo ...
- go 写入yaml_[Golang] 从零开始写Socket Server(4):将运行参数放入配置文件(XML/YAML)...
为了将我们写好的Server发布到服务器上,就要将我们的代码进行build打包,这样如果以后想要修改一些代码的话,需要重新给代码进行编译打包并上传到服务器上. 显然,这么做过于繁琐...因此常见的做法 ...
- android: 静态XML和动态加载XML混合使用,以及重写Layout控件
近期对android里面控件修改做了很多实验,由于公司需求很多,不得不重写很多控件.程序目标无非是:高效.轻巧.清晰.标准化 完成动态加载Layout有两种方法,依据个人喜好进行选择: 方法1:静态主 ...
最新文章
- 一位老工程师的终告 (推荐)
- 【总结】DIV+CSS有可能遇到的问题
- log4j添加日志一定记住在工程的web.xml文件下加一些内容
- 基于nodejs实现本地网页服务器-实现手机测试电脑开发的移动端网页
- Celery 之异步任务、定时任务、周期任务
- DataList分页,保存CheckBox控件状态
- 自制人脸数据,利用keras库训练人脸识别模型
- STM32学习笔记(十) CAN通讯测试(环回模式)
- C++ 返回值优化(RVO,Return Value Optimization)
- python类方法在类外定义_第7.15节 Python中classmethod定义的类方法详解
- excel打开超链接不使用浏览器,使用默认图片浏览软件
- PHP裂变红包源码,php版本微信裂变红包api详解
- 足阳明胃经----人的后天之本
- 弗雷歇距离的原理及python代码实现(动态规划)
- 傅里叶逆变换程序matlab,按时间抽取基2-快速傅里叶逆变换算法_MATLAB代码
- 苹果胜三星震惊国产手机
- 5个PPT素材、模板网站,建议收藏~
- Qt VTK软件开发问题学习记录
- 产品经理基础——需求文档
- The Sandbox 与 Knights of Degen 达成合作,在元宇宙建立王国
热门文章
- 阿里云网站备案基础知识-什么是网站备案
- 6.torchvision
- 吊打面试官系列之:UI自动化面试题汇总,对标P7,从此再也不怕面试官了。
- linux主机做racl,linux学习日记十一 账号管理与ACL权限设置
- 怎么linux添加guest,如何为Ubuntu 16.04安装VirtualBox Guest Additions
- P1107 [BJWC2008]雷涛的小猫
- 用php做滚动,用PHP+java实现自动新闻滚动窗口
- C++语言风格流变史(转)
- linux命令 trtest,Linux tr命令的使用方法
- Perl笔记:07、以正则表达式进行匹…