我知道有很多关于ScrollView中ViewPager情况的问题,但我还没有看到一个描述我所面临的情况的问题。
问题是,当我没有ScrollView时,我的viewPager工作正常,因为它可以在这张照片中看到。
如果我将ScrollView仅用于ViewPager下面的元素,我也会工作,但我不想要这种行为。
当我添加ScrollView时,我可以向上滚动&我也可以左右滑动(这样做,我使用this approach),但随后图像被加载但未显示,如下图所示。
我发现的是,例如,我有四个图像,我在第一个位置看第一个图像,我可以向右滑动两次(第三个位置),我什么都看不到,但是当我向左滑动一次时(第二个位置) ),然后我可以看到第二张图片!
不完全确定它是否相关,但方法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进行测试
答案 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;
}