3

在我的 android 应用程序中,我想在PagerSlidingTab and ViewPager里面实现ScrollView. 布局文件如下所示。我正面临一个奇怪的问题。它仅在顶部显示标签条,ViewPager屏幕上不显示片段内容的内容。我不知道那有什么问题。如果我从布局中删除 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>
4

2 回答 2

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元素中。我从这个链接得到了答案:是否可以在 ScrollView 中有一个 ViewPager?

于 2015-01-06T10:34:32.137 回答
2

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

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

建议的解决方案是将滚动视图放在 viewPager 控件内的每个元素内。所以你要向我假设的 ViewPage 添加片段?只需确保 ScrollView 是每个布局中的 topMost 控件。例如,当您想在 ViewPager 中放置一个列表视图时,它可以减少意外行为,ListViews 和 ScrollViews 彼此不喜欢,您只能拥有一个或另一个,您不能在 ScrollView 内滚动任何其他内容。

希望这至少对您有所帮助。如果您需要有关此的更多信息,请联系我。

于 2015-01-06T10:35:40.883 回答