内部scrollview中的viewpager使得片段不应该显示

时间:2014-01-24 10:22:13

标签: android android-fragments android-viewpager scrollview

我知道有很多关于ScrollView中ViewPager情况的问题,但我还没有看到一个描述我所面临的情况的问题。

问题是,当我没有ScrollView时,我的viewPager工作正常,因为它可以在这张照片中看到。 No scrollView

如果我将ScrollView仅用于ViewPager下面的元素,我也会工作,但我不想要这种行为。

ScrollView not affecting viewPager

当我添加ScrollView时,我可以向上滚动&我也可以左右滑动(这样做,我使用this approach),但随后图像被加载但未显示,如下图所示。

ScrollView with ViewPager inside

我发现的是,例如,我有四个图像,我在第一个位置看第一个图像,我可以向右滑动两次(第三个位置),我什么都看不到,但是当我向左滑动一次时(第二个位置) ),然后我可以看到第二张图片!

不完全确定它是否相关,但方法getCount似乎变得非常疯狂并且一直被称为不间断。

XML

<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/footer"
android:id="@+id/custom_scroll"
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:scrollbarFadeDuration="0"
>   

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    >
    <com.-----.-----.WrapContentHeightViewPager
        android:id="@+id/imagePager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    >
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/title" 
        android:textSize="15sp"
        android:paddingTop="15dp"
        android:paddingLeft="10dp" 
        android:paddingRight="10dp" />
    <TextView
        android:id="@+id/tags"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tags" 
        android:textColor="#ffff44"
        android:textSize="13sp"
        android:paddingLeft="10dp" 
        android:paddingRight="10dp" />

我尝试使用不同类型的自定义ScrollViews,但问题仍然存在。我正在使用Android 4.4的Nexus 4进行测试

2 个答案:

答案 0 :(得分:9)

@AlvaroSantisteban很高兴我可以帮忙。我自己也很挣扎。这一切都归结为理解布局如何工作,更具体地说是理解wrap_content和match_parent。 所以这是最初的解决方案:

你的ViewPager应该有一个固定的高度,考虑它在ScrollView中。

答案 1 :(得分:0)

您可以使用此方法设置代码中元素的宽度或高度,

      private static int GetActualDIPValue(Activity activity, int PX)
  {

        Resources r = activity.getResources();

        int actualDIP = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,PX, r.getDisplayMetrics());

        return actualDIP;
  }