如何将多个ViewPagers放入ScrollView?

时间:2012-06-01 15:06:10

标签: android scrollview swipe android-viewpager

我正在尝试实现一个包含ViewPagers列表的布局。每个ViewPager都可以独立滑动。请参阅下面的图片链接。

picture of the layout

我尝试使用ScrollView和一个带有ViewPagers的LinearLayout,但我只显示了一个ViewPager。甚至可以在一个屏幕上获得几个ViewPagers吗?

我的代码到目前为止: main.xml中

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager2"
            android:layout_width="wrap_content"
            android:layout_height="100dp" />

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager3"
            android:layout_width="wrap_content"
            android:layout_height="100dp" />
    </LinearLayout>

</ScrollView>

MainActivity

public class MainActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ViewPagerAdapter adapter2 = new ViewPagerAdapter( this );
        ViewPager pager = (ViewPager)findViewById( R.id.viewpager2 );
        pager.setAdapter( adapter2 );

        ViewPagerAdapter adapter3 = new ViewPagerAdapter( this );
        ViewPager pager3 =
            (ViewPager)findViewById( R.id.viewpager3 );
        pager3.setAdapter( adapter3 );   
    }

}

有什么想法吗? 谢谢!  编辑:这段代码实际上有效!

3 个答案:

答案 0 :(得分:12)

使用多个ViewPager确实有些可疑。我正在膨胀几个视图,每个视图都持有一个ViewPager,只有第一个ViewPager被填充了来自其适配器的数据。但是,如果我为每个ViewPager提供一个唯一的ID,则会填充所有这些ID。

我有一个容器,其唯一的子容器是ViewPager:

ViewPager pager = (ViewPager) pagerContainer.getChildAt(0);
         pager.setId(i);

其中i是循环的正索引。

答案 1 :(得分:2)

问题与ViewPager的默认高度有关,因为默认情况下它是&#34; fill_parent&#34; ,我们无法使用&#34; wrap_content&#34;重置。 我发现将高度固定为某些硬代码值的解决方案将返回您屏幕上显示的所有视图寻呼机项目。

我知道这是一个可疑的解决方案,但它适用于我,我希望它能与你合作。

答案 2 :(得分:-1)

在您的XML中的LinearLayout上。设置android:weightSum="2"。对于每个viewpager,请设置android:layout_weight="1"。另外,将LinearLayout的每个子项的高度设置为0dp。那应该是诀窍