Android:ScrollView + ViewPager无法正常运行

时间:2015-01-06 10:11:19

标签: android android-fragments android-viewpager android-scrollview pagertabstrip

在我的Android应用程序中,我想在PagerSlidingTab and ViewPager内实现ScrollView。布局文件如下所示。我面临着奇怪的问题。它仅在顶部显示标签条,并且屏幕上的ViewPager片段内容不显示任何内容。我不知道hwat是什么问题。如果我从layotu删除ScreollView然后它完美地工作但我想要ScrollView内的所有内容。请帮我解决这个问题。

布局:

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

    <RelativeLayout
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <com.danzim.diamond.classes.KenBurnsView
            android:id="@+id/newsHeaderKenburn"
            android:layout_width="match_parent"
            android:layout_height="180dp"
            android:layout_alignParentTop="true"
            android:background="@color/black" />

        <com.astuetz.PagerSlidingTabStrip
            android:id="@+id/newsTabs"
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:layout_below="@+id/newsHeaderKenburn"
            android:background="@drawable/background_news_tab"
            app:pstsDividerColor="@color/transparent"
            app:pstsIndicatorColor="@android:color/white"
            app:pstsTextAllCaps="true" />

        <android.support.v4.view.ViewPager
            android:id="@+id/newsPager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/newsTabs" />
    </RelativeLayout>

</ScrollView>

2 个答案:

答案 0 :(得分:5)

我的代码中有一个小错误。我更改了ScrollView代码及其正常工作。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

只需将android:fillViewport="true"添加到ScrollView元素即可。我从这个链接得到了答案:Is it possible to have a ViewPager inside of a ScrollView?

答案 1 :(得分:2)

简单的解决方案是添加android:fillViewport =&#34; true&#34;滚动视图,但使用此布局需要考虑更深层次的问题。

您遇到的问题是ScrollView包装其内容并采用&#34;所有权&#34;调整其内部元素的大小。因此,它调整了相对布局的大小,使其仅适合PagerSlidingTabStrip的标题,因为它是屏幕布局时的所有信息。尚未添加ViewPager的内容,因此在调整相对布局时不会考虑这一点。

建议的解决方案是将scrollview放在viewPager Control中的每个元素内。所以你要在我假设的ViewPage中添加片段?只需确保ScrollView是每个布局中的topMost控件。如果你想在ViewPager中放置一个listview,ListViews和ScrollViews彼此不喜欢,你只能拥有一个或者你不能在ScrollView中滚动的任何其他内容,那么以后会出现意想不到的行为。

希望这至少帮助了你。如果您需要更多相关信息,请告诉我。