使用viewpager在视图中滚动子项

时间:2013-10-26 13:22:30

标签: android android-viewpager swipe

我有一个看起来像http://flashspeaksactionscript.com/wp-content/uploads/2008/06/vert-menu18.jpg的菜单。考虑到图片中的child为“3”,我希望能够向左滑动“3”并看到能够看另一个项目。

这是我的xml代码:

         <LinearLayout
            android:id="@+id/llayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="45dp" >

            <Button
                android:id="@+id/Sum"
                style="@style/SummaryButtons"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:text="Item 1" />
            <Button
                android:id="@+id/nana"
                style="@style/SummaryButtons"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:text="Item 1" />
            <Button
                android:id="@+id/mama"
                style="@style/SummaryButtons"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:text="Item 1" />

        </LinearLayout>


        <LinearLayout
            android:id="@+id/example_get_by_id"
            android:layout_width

等。这些是孩子们。例如,我希望能够轻扫这些按钮,因为我无法使用HorizontalScrollView,因为我的应用程序由片段组成,并且已经具有浏览片段的滑动功能。这些片段和HorizontalScrollView的滑动能力混淆了,这就是为什么我需要能够将Viewpager用于单个项目而不是整个页面。至少有一个例子吗?我找不到任何东西。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

看看这可能对您有用:

public class MainActivity extends Activity {

@Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra);
  ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
  myPager.setAdapter(adapter);
  myPager.setCurrentItem(0);
 }

 private int imageArra[] = { R.drawable.gallery_photo_1, R.drawable.gallery_photo_2,
   R.drawable.gallery_photo_3, R.drawable.gallery_photo_5,
   R.drawable.gallery_photo_6, R.drawable.gallery_photo_7,
   R.drawable.gallery_photo_8, R.drawable.ic_launcher };

}

和ViewPagerAdapter:

public class ViewPagerAdapter extends PagerAdapter {

Activity activity;
int imageArray[];

public ViewPagerAdapter(Activity act, int[] imgArra) {
    imageArray = imgArra;
    activity = act;
}

public int getCount() {
    return imageArray.length;
}

public Object instantiateItem(View collection, int position) {
     ImageView view = new ImageView(activity);
      view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
        LayoutParams.FILL_PARENT));
      view.setScaleType(ScaleType.FIT_XY);
      view.setBackgroundResource(imageArray[position]);
      ((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;
}
}

xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<android.support.v4.view.ViewPager
    android:id="@+id/myfivepanelpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" >

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

</LinearLayout>