3

下面显示了我正在寻找的图像。目前我正在使用查看寻呼机和圆圈指示器。在视图页面中,它只显示一个图像。

我想在一个浏览器中显示三个图像,如图所示。当我滑动该页面时,三个不同的图像再次加载表单服务器,下面有文本。这该怎么做?关于这个或任何其他方式来实现这一点的任何想法?

我的代码如下所示。

我在这里添加了一些 xml 布局:homespizzaview.xml

  <LinearLayout
        android:id="@+id/linearLayoutbutton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip" >

   <android.support.v4.view.ViewPager
    android:id="@+id/pagerMenu"
    android:layout_width="0dip"
    android:layout_height="100dip"
    android:layout_weight="1"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip">

          </android.support.v4.view.ViewPager>   
    </LinearLayout>


  <RelativeLayout
    android:id="@+id/relativeLayoutDot1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dip">
  <com.viewpagerindicator.CirclePageIndicator
   android:id="@+id/indicatorMenu"
   android:layout_width="fill_parent"
   android:layout_height="25dip"
   android:layout_marginLeft="10dip"
   android:layout_marginRight="10dip"
   android:padding="10dip" />

 </RelativeLayout>

主视图.java

 public class HomeView extends Activity {

    adaptermenu = new MenuPagerAdapter();
    pagerMenu = (ViewPager)findViewById(R.id.pagerMenu);
    pagerMenu.setAdapter(adaptermenu);
    pagerMenu.setCurrentItem(0);
    pagerMenu.setOffscreenPageLimit(adapter.getCount());
    pagerMenu.getAdapter().notifyDataSetChanged();
    pagerMenu.setPageMargin(15);

    indicator  = (CirclePageIndicator)findViewById(R.id.indicatorMenu);
    indicator.setViewPager(pagerMenu);

    final float density1 = getResources().getDisplayMetrics().density;
    indicator.setRadius(5 * density1);
    indicator.setPageColor(0xFF000000);
    indicator.setFillColor(0xFF888888);
    indicator.setStrokeWidth(2 * density1);

    //We set this on the indicator, NOT the pager
    indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {             
        @Override
        public void onPageSelected(int position) {
         //   Toast.makeText(HomeSpizzaView.this, "Changed to page " + position, Toast.LENGTH_SHORT).show();
            pagerMenu.setCurrentItem(position, false);            
        }
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }
        @Override
        public void onPageScrollStateChanged(int state) {               
        }
    });

    indicator.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            pagerMenu.setCurrentItem(0);  
          Log.i("", "getCurrentItem"+  mPager.getCurrentItem());
          pagerMenu.getAdapter().notifyDataSetChanged();
        }
    });

       }
    } 

MenuPagerAdapter.java

 public class MenuPagerAdapter extends PagerAdapter {


public int getCount() {
    return 3;
}

public Object instantiateItem(View collection, int position) {

    ImageView image = new ImageView(collection.getContext()); 
    image.setPadding(20, 0, 20, 0);     
    int resId = 0;
    switch (position) {
    case 0:
        resId = R.drawable.promotion1;
        break;
    case 1:
        resId = R.drawable.promotion2;
        break;
    case 2:
        resId = R.drawable.promotion3;
        break;
    }
    image.setImageResource(resId); 
    ((ViewPager) collection).addView(image, 0);

    return image;
}

@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;
}
}

这是更新代码,它显示带有以下文本视图的单个图像视图。我正在寻找动态图像和文本.. 意味着在 1 个视图寻呼机中 3 个图像和 3 个文本.. 目前它显示 1 个图像视图和下面的文本.. 我正在单个视图寻呼机中寻找 3 个图像.. 如果我添加线性布局它显示 3 图像。但我添加了显示单个图像的相对布局.. 任何我弄错的想法。

 public Object instantiateItem(View collection, int position) {

    RelativeLayout  lLayout;      
    RelativeLayout.LayoutParams relativeLayout;

    lLayout = new RelativeLayout (collection.getContext());
      relativeLayout = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);

        for (int i = 0; i < 3; i++) {
            image = new ImageView(collection.getContext());
            image.setPadding(20, 0, 20, 0); 
            image.setId(1);
            int res = 0;
          switch (0) {
          case 0:
              res = R.drawable.menu_antipasti;          
              break;
          case 1:
              res = R.drawable.menu_combos;
              break;
          case 2:
              res = R.drawable.menu_drinks;
              break;
          }                  
            image.setImageResource(res);
            lLayout.addView(image);

            textview = new TextView(collection.getContext());
            textview.setTextColor(Color.BLACK);
            textview.setId(2);
            textview.setText("pizza");  
            textview.setPadding(60, 0, 20, 0);
            relativeLayout.addRule(RelativeLayout.BELOW, image.getId());
            lLayout.addView(textview, relativeLayout);
        }

        ((ViewPager) collection).addView(lLayout, 0);
        return lLayout;
    }
4

1 回答 1

2

现在你ImageViewinstantiateItem方法返回。如果你想在一页上有 3 张图片,你需要创建布局,在上面放置 3 张图片并返回它。例如:

public Object instantiateItem(View collection, int position) {
    LinearLayour images = new LinearLayout(collection.getContext());
    for (int i = 0; i < 3; i++) {
        ImageView image = new ImageView(collection.getContext());
        image.setPadding(20, 0, 20, 0);     
        images.addView(image);
        int res = someResource depending on i and position.
        image.setImageResource(res);
    }

    ((ViewPager) collection).addView(images, 0);
    return images;
}
于 2012-12-07T13:22:54.417 回答