ViewPager拒绝展示其漂亮的小脑袋

时间:2014-04-15 07:23:52

标签: android android-viewpager

我无法显示ViewPager及其内容。我错过了什么?我在下面列出了两个版本的XML布局。版本#1包括ViewPager。版本#2排除了ViewPager,因此您可以看到在ViewPager中应该可以看到的内容。如何解决这个问题,我们将不胜感激。

编辑 - 现在包含适配器代码。值得注意的是,即使在Eclipse 中,ViewPager内容也不可见。即,我认为适配器与问题无关。

    class MyPagerAdapter extends PagerAdapter {
    public Object instantiateItem(View collection, int position) {
        return guideContainer.getChildAt(position); 
    }

    @Override
    public int getCount() {
        return timeSlotContainersHD.length;
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == ((View) arg1);
    }

     @Override public void destroyItem(View arg0, int position, Object arg2)  {  
     } 
}

版本#1包括ViewPager:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/GuideSideScrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/Green"
android:fillViewport="true" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top|center"
    android:background="@color/Orange"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/MiddleView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight=".05"
        android:gravity="center"
        android:text="ViewPager Below Me"
        android:background="@color/black"
        android:textColor="@color/Orange" />

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

    <LinearLayout
        android:id="@+id/TimeSlots1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="@color/red"
        android:orientation="vertical" >

        <Button
            android:id="@+id/FirstButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button1"
            android:textSize="12sp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button2"
            android:textSize="12sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/TimeSlots2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="@color/Green"
        android:orientation="vertical" >

        <Button
            android:id="@+id/FirstButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button3"
            android:textSize="12sp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button4"
            android:textSize="12sp" />
    </LinearLayout>

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

    <TextView
        android:id="@+id/TimeSlot1Program2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/Charcoal"
        android:gravity="center"
        android:text="ViewPager Above Me"
        android:textColor="@color/Orange" />
   </LinearLayout>

</ScrollView>

Screenshot of version#1

版本#2,不包括ViewPager:

    

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top|center"
    android:background="@color/Orange"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/MiddleView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight=".05"
        android:gravity="center"
        android:text="NO ViewPager Below Me"
        android:background="@color/black"
        android:textColor="@color/Orange" />

    <LinearLayout
        android:id="@+id/TimeSlots1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="@color/red"
        android:orientation="vertical" >

        <Button
            android:id="@+id/FirstButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button1"
            android:textSize="12sp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button2"
            android:textSize="12sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/TimeSlots2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="@color/Green"
        android:orientation="vertical" >

        <Button
            android:id="@+id/FirstButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button3"
            android:textSize="12sp" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button4"
            android:textSize="12sp" />
    </LinearLayout>

    <TextView
        android:id="@+id/TimeSlot1Program2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/Charcoal"
        android:gravity="center"
        android:text="NO ViewPager Above Me"
        android:textColor="@color/Orange" />
</LinearLayout>

</ScrollView>

Content visible when ViewPager removed

2 个答案:

答案 0 :(得分:1)

花了一段时间,但我现在通过颠倒布局的层次结构来解决这个问题。我现在不是将ViewPager放在ScrollView中,而是以编程方式构建ScrollViews数组。每个ScrollView都位于各个ViewPager页面的顶层。现在一切都很好。

答案 1 :(得分:0)

现在你正试图在<android.support.v4.view.ViewPager>元素中定义ViewPager的布局,如果我做对了。

不要那样做。而是为您将使用的片段定义单独的布局XML。然后以编程方式将其加载到Fragments中。

您可以在此处查看如何执行此操作的示例: http://www.javacodegeeks.com/2013/04/android-tutorial-using-the-viewpager.html

尝试:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top|center"
    android:background="@color/Orange"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/MiddleView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight=".05"
        android:gravity="center"
        android:text="ViewPager Below Me"
        android:background="@color/black"
        android:textColor="@color/Orange" />

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

    <TextView
        android:id="@+id/TimeSlot1Program2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/Charcoal"
        android:gravity="center"
        android:text="ViewPager Above Me"
        android:textColor="@color/Orange" /> 
</LinearLayout>

看看它显示了什么。