如何ViewPager设置OnClickListener [英] How to set OnClickListener in ViewPager
问题描述
我是新的Android开发,我学习到code和;设计一个Android项目。我有问题, ViewPager
并不能找到在本网站或通过谷歌搜索的答案。
问题:
我不能让一个按钮
执行其行动,而它在 ViewPager
。
您可以看到我的项目和放大器;这里的apk文件: https://dl.dropbox.com/u/9820517/ForOneTimeDownload /TestPagerView.rar
这是我的PagerDemo.java
公共类PagerDemo延伸活动{
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
的setContentView(R.layout.activity_pager_demo);
myPagerAdapter适配器=新myPagerAdapter();
ViewPager myPager =(ViewPager)findViewById(R.id.myfivepanelpager);
myPager.setAdapter(适配器);
myPager.setCurrentItem(2);
SetAllBtnFunc();
}
公共无效SetAllBtnFunc(){
//所有FUNC
View.OnTouchListener触摸=新View.OnTouchListener(){
公共布尔onTouch(视图V,MotionEvent事件){
// TODO自动生成方法存根
Log.d(hlv_trinh,按钮被感动!);
返回false;
}
};
View.OnClickListener点击=新View.OnClickListener(){
公共无效的onClick(视图v){
// TODO自动生成方法存根
Log.d(hlv_trinh,按钮被点击!);
}
};
//获取视图
视图V = getLayoutInflater()膨胀(R.layout.middle,空)。
按钮B =(按钮)v.findViewById(R.id.myBtn);
b.setOnClickListener(点击);
b.setOnTouchListener(触摸);
}
@覆盖
公共布尔onCreateOptionsMenu(功能菜单){
。getMenuInflater()膨胀(R.menu.activity_pager_demo,菜单);
返回true;
}
私有类myPagerAdapter扩展PagerAdapter {
公众诠释getCount将(){
返回5;
}
公共对象instantiateItem(查看收集,INT位置){
LayoutInflater充气=(LayoutInflater)collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
INT渣油= 0;
开关(位置){
情况下0:
渣油= R.layout.farleft;
打破;
情况1:
渣油= R.layout.left;
打破;
案例2:
渣油= R.layout.middle;
打破;
案例3:
渣油= R.layout.right;
打破;
壳体4:
渣油= R.layout.farright;
打破;
}
查看查看= inflater.inflate(渣油,NULL);
((ViewPager)集合).addView(查看,0);
返回查看;
}
@覆盖
公共无效destroyItem(查看为arg0,INT ARG1,ARG2对象){
((ViewPager)为arg0).removeView((查看)ARG2);
}
@覆盖
公共布尔isViewFromObject(查看为arg0,对象ARG1){
返回将arg0 ==((查看)ARG1);
}
@覆盖
公共Parcelable saveState和(){
返回null;
}
}
}
我的布局位置的内容:
< XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直>
<的TextView
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_gravity =中心
机器人:文本=中间
机器人:TEXTSIZE =30dp>
< / TextView的>
<按钮
机器人:ID =@ + ID / myBtn
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文本=测试请点击/>
< / LinearLayout中>
下面是一个简单的解决方案。
在您的布局XML,在按钮标签中设置安卓的onClick =AnyName
,然后在你的 PagerDemo.java
,地点:
公共无效AnyName(视图v){
//做你的东西
}
这集 onClickListener
在 ViewPager
。
I'm new to Android development and I'm studying to code & design an Android project. I have problem with ViewPager
and can't find answer on this site or via a Google search.
Problem:
I can't make a Button
execute its action while it's in ViewPager
.
You can see my project & apk file here: https://dl.dropbox.com/u/9820517/ForOneTimeDownload/TestPagerView.rar
Here is my PagerDemo.java:
public class PagerDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_pager_demo);
myPagerAdapter adapter = new myPagerAdapter();
ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(2);
SetAllBtnFunc();
}
public void SetAllBtnFunc() {
//all func
View.OnTouchListener touch = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Log.d("hlv_trinh", "Button be Touched!");
return false;
}
};
View.OnClickListener click = new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d("hlv_trinh", "Button be Clicked!");
}
};
//Get view
View v = getLayoutInflater().inflate(R.layout.middle, null);
Button b = (Button) v.findViewById(R.id.myBtn);
b.setOnClickListener(click);
b.setOnTouchListener(touch);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_pager_demo, menu);
return true;
}
private class myPagerAdapter extends PagerAdapter {
public int getCount() {
return 5;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch (position) {
case 0:
resId = R.layout.farleft;
break;
case 1:
resId = R.layout.left;
break;
case 2:
resId = R.layout.middle;
break;
case 3:
resId = R.layout.right;
break;
case 4:
resId = R.layout.farright;
break;
}
View view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
}
}
My layout content here:
<?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" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Middle"
android:textSize="30dp" >
</TextView>
<Button
android:id="@+id/myBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test Click" />
</LinearLayout>
Here is an easy solution.
In your layout XML, in the button tag, set android:onClick="AnyName"
, then on your PagerDemo.java
, place:
public void AnyName(View v) {
// Do your stuff
}
That sets onClickListener
in a ViewPager
.
这篇关于如何ViewPager设置OnClickListener的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!