如何添加多个内容鉴于寻呼机? [英] How to add multiple contents in view pager?

查看:171
本文介绍了如何添加多个内容鉴于寻呼机?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我与Android apps.I工作已经使用包含在右端仅适用于图像视图寻呼机创造了一个可滑动浏览视图。现在,我想添加一些textviews和按键在同一页面浏览器为每个视图。我如何添加文本视图和按钮与页面查看器一起?
这里是我的code

Swipe_adapter.java

 公共类Swipe_adapter扩展PagerAdapter {
  上下文语境;
  私人诠释[] = GalImages新INT [] {
  R.drawable.app1,
  R.drawable.app2,
  R.drawable.gosms
  };    ArrayList的<&HashMap的LT;字符串,字符串>>名单=新的ArrayList<&HashMap的LT;字符串,字符串>>();
    地图=新的HashMap();   的String []海峡=新的String []
                        {
         APP1,APP2,APP3                        };   Swipe_adapter(上下文的背景下){
   this.context =背景;
  }
  @覆盖
   公众诠释的getCount(){
    返回GalImages.length;
   }  @覆盖
  公共布尔isViewFromObject(查看视图,Object对象){
    返回查看==((ImageView的)对象);  }  @覆盖
  公共对象instantiateItem(ViewGroup中的容器,INT位置){
  ImageView的ImageView的=新ImageView的(上下文);
  INT填充= context.getResources()getDimensionPixelSize(R.dimen.padding_medium)。
  imageView.setPadding(填充,填充,填充,填充);
  imageView.setScaleType(ImageView.ScaleType.FIT_END);
  imageView.setImageResource(GalImages [位置]);
  ((ViewPager)容器).addView(ImageView的,0);
  返回ImageView的;
  }  @覆盖
   公共无效destroyItem(ViewGroup中的容器,INT位置,Object对象){
    ((ViewPager)容器).removeView((ImageView的)对象);
  }
  }

这是我的片段类

 公共类FeaturedFragment扩展片段{      @覆盖
     公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
        捆绑savedInstanceState){        查看rootView = inflater.inflate(R.layout.fragment_featured,集装箱,FALSE);
        ViewPager viewPager =(ViewPager)rootView.findViewById(R.id.view_pager);
         Swipe_adapter适配器=新Swipe_adapter(getActivity());
         viewPager.setAdapter(适配器);        返回rootView;
     }
  }


解决方案

我遇到了同样的问题,当使用麦克奥尔蒂斯的 TouchImageView (变焦功能)中的 ViewPager (我只能得到采取一个主视图,在这种情况下,延长的ImageView ),并制定了一个巧妙的解决办法。我想添加一些动态文本的一系列用户刷卡,虽然​​地图,加入地图3/13等为覆盖。我周围这让通过实例(的TextView 在我的情况)额外的意见 ViewPager 适配器之外,然后加入 onPageChangeListener 到更新的TextView的viewPager对象。

首先,我设置了XML采取两种观点(在 RelativeLayout的允许文本叠加图像):

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:ID =@ + ID / RelativeLayoutPager
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直>< org.mypackagename.ExtendedViewPager
    机器人:ID =@ + ID / viewpager
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:layout_alignParentTop =真/><的TextView
    机器人:ID =@ + ID / myTextView
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_alignBottom =@ ID / viewpager
    机器人:layout_alignLeft =@ ID / viewpager
    机器人:layout_alignRight =@ ID / viewpager
    机器人:layout_alignTop =@ ID / viewpager
    机器人:layout_gravity =右
    机器人:layout_weight =1.0
    机器人:重力=右
    机器人:paddingRight =5dip
    机器人:paddingTop =5DP
    机器人:文字=
    机器人:textAppearance =机器人:ATTR / textAppearanceMedium
    机器人:文字样式=大胆/>< / RelativeLayout的>

我ViewPager适配器 instantiateItem 方法只处理 TouchImageView 查看:

 公开查看instantiateItem(ViewGroup中的容器,诠释POS){
        TouchImageView IMG =新TouchImageView(container.getContext());
        img.setImageDrawable((绘制对象)imageHolder.get(POS));
        container.addView(IMG,LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
        返回IMG;
}

最后,我设置了的TextView ViewPager 的意见之后创建的听众在onCreate方法:

  vPager.setOnPageChangeListener(新ViewPager.SimpleOnPageChangeListener(){
        私人诠释当前页;        @覆盖
        公共无效使用onPageSelected(INT POS){
            当前是= POS;
            StringBuilder的SB =新的StringBuilder();
            sb.append(地图);
            sb.append((正+ 1));
            sb.append(/);
            sb.append(allMaps.size());
            myTextView.setText(某人);
        }        公众最终诠释getCurrentPage(){
            返回当前页;
        }
});

现在,当我翻阅地图刷卡,TextView的也被更新。你不能从适配器内做到这一点 instantiateItem 方法的立场似乎并没有反映出你当它是由刷卡(不知道为什么更新的哪一页! )...

Hi I am working with android apps.I had created a swipeable view using view pager which contains only images at the right end. Now I want to add some textviews and buttons in the same page viewer for each view. How can I add text views and buttons along with page viewer ??? here is my code

Swipe_adapter.java

  public class Swipe_adapter extends PagerAdapter {
  Context context;
  private int[] GalImages = new int[] {
  R.drawable.app1,
  R.drawable.app2,
  R.drawable.gosms
  };

    ArrayList<HashMap<String,String>> list=new ArrayList<HashMap<String, String>>();
    Map map=new HashMap ();

   String[] str=new String[]
                        {
         "app1","app2","app3"

                        };

   Swipe_adapter(Context context){
   this.context=context;
  }
  @Override
   public int getCount() {
    return GalImages.length;
   }

  @Override
  public boolean isViewFromObject(View view, Object object) {
    return view == ((ImageView) object);

  }

  @Override
  public Object instantiateItem(ViewGroup container, int position) {
  ImageView imageView = new ImageView(context);
  int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium);
  imageView.setPadding(padding, padding, padding, padding);
  imageView.setScaleType(ImageView.ScaleType.FIT_END);
  imageView.setImageResource(GalImages[position]);
  ((ViewPager) container).addView(imageView, 0);
  return imageView;
  }

  @Override
   public void destroyItem(ViewGroup container, int position, Object object) {
    ((ViewPager) container).removeView((ImageView) object);
  }
  }

here is my Fragment class

    public class FeaturedFragment extends Fragment {

      @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_featured, container, false);
        ViewPager viewPager = (ViewPager)rootView.findViewById(R.id.view_pager);
         Swipe_adapter adapter = new Swipe_adapter(getActivity());
         viewPager.setAdapter(adapter);

        return rootView;
     }
  }

解决方案

I encountered the same issue when using Mike Ortiz's TouchImageView (for zoom capabilities) within a ViewPager (which I can only get to take one main view, in this case the extended ImageView), and worked out a neat solution. I wanted to add some dynamic text to a series of maps that the user swiped though, adding "Map 3/13" etc. as an overlay. I got around this by instantiating the extra views (TextView in my case) outside of the ViewPager adapter, then adding an onPageChangeListener to the viewPager object which updated the textView.

Firstly I set up the XML to take both views (the RelativeLayout allows the text to overlay the image):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayoutPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<org.mypackagename.ExtendedViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true" />

<TextView
    android:id="@+id/myTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@id/viewpager"
    android:layout_alignLeft="@id/viewpager"
    android:layout_alignRight="@id/viewpager"
    android:layout_alignTop="@id/viewpager"
    android:layout_gravity="right"
    android:layout_weight="1.0"
    android:gravity="right"
    android:paddingRight="5dip"
    android:paddingTop="5dp"
    android:text=""
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textStyle="bold" />

</RelativeLayout>

My ViewPager adapter instantiateItem method only handles the TouchImageView view:

public View instantiateItem(ViewGroup container, int pos) {
        TouchImageView img = new TouchImageView(container.getContext());
        img.setImageDrawable((Drawable) imageHolder.get(pos));
        container.addView(img, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        return img;
}

And finally I created the listener in the onCreate method after setting up the TextView and ViewPager views:

vPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        private int currentPage;

        @Override
        public void onPageSelected(int pos) {
            currentPage = pos;
            StringBuilder sb = new StringBuilder();
            sb.append("Map ");
            sb.append((pos + 1));
            sb.append("/");
            sb.append(allMaps.size());
            myTextView.setText(sb);
        }

        public final int getCurrentPage() {
            return currentPage;
        }
});

Now, when I swipe through the maps, the TextView is also updated. You can't do this from within the adapter instantiateItem method as the position doesn't seem to reflect what page you are on when it's updated by the swipe (no idea why!)...

这篇关于如何添加多个内容鉴于寻呼机?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆