在ViewPager中垂直滚动和水平分页

时间:2017-06-21 14:10:52

标签: android android-layout android-viewpager

我有许多页面,其内容大于屏幕,即用户必须向下滚动才能看到更多内容。这些页面位于ViewPager中。对于我的生活,我无法弄清楚如何使垂直滚动工作。

为了清楚起见,我不想垂直翻页到另一页,只需在单页内向下滚动即可。

我希望有人能指出我正确的方向。搜索并没有产生任何结果,但如果这不常见,我会感到惊讶吗?

我尝试了什么:

  1. 围绕包含视图寻呼机和其他视图的线性布局环绕滚动视图。
  2. 布局和布局参数的不同组合。
  3. 由于

    根据建议,我已经从AndroidHive中获取了示例,因此我的片段xml在下面,它有足够的内容以至于它不适合屏幕。因此,我希望能够向下滚动,类似于列表视图,以查看其余内容。

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:context="info.androidhive.materialtabs.fragments.OneFragment">
    
        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/one"
            android:textSize="40dp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/text"
            android:text="@string/one"
            android:textSize="40dp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/text1"
            android:text="@string/one"
            android:textSize="40dp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/text3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/text2"
            android:text="@string/one"
            android:textSize="40dp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/text4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/text3"
            android:text="@string/one"
            android:textSize="40dp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/text5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/text4"
            android:text="@string/one"
            android:textSize="40dp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/text6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/text5"
            android:text="@string/one"
            android:textSize="40dp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/text7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/text6"
            android:text="@string/one"
            android:textSize="40dp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/text8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/text7"
            android:text="@string/one"
            android:textSize="40dp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/text9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/text8"
            android:text="@string/one"
            android:textSize="40dp"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/text10"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/text9"
            android:text="@string/one"
            android:textSize="40dp"
            android:textStyle="bold" />
    </RelativeLayout>
    </ScrollView>
    

    我还没有改变示例代码中的任何其他内容。

2 个答案:

答案 0 :(得分:1)

  

使用Scrollview在viewpager中输入片段。

viewpager中的片段应该提供所需的水平分页和片段内部的滚动视图提供垂直。

  

Fragment One

    import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class OneFragment extends Fragment{


public OneFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_one, container, false);
}
}
  

Fragment One的布局

 <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="match_parent">

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="info.androidhive.materialtabs.fragments.OneFragment">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/one"
        android:textSize="40dp"
        android:textStyle="bold"
        android:layout_centerInParent="true"/>

</RelativeLayout>
</ScrollView>

Androidhive有一个简单的教程 http://www.androidhive.info/2015/09/android-material-design-working-with-tabs/

答案 1 :(得分:0)

你尝试过使用片段吗?使用滚动视图中的页面布局创建单独的片段XML文件...

<!-- fragment_layout.xml -->
<ScrollView 
    android:layout_width='match_parent'
    android:layout_height='match_parent'
    ...>
    <WhateverYourPageLayoutIs
        android:layout_width='match_parent'
        android:layout_height='wrap_content'
        .../>
</ScrollView>

然后创建一个使用此布局的Fragment子类,并使用FragmentPagerAdapter(或FragmentStatePagerAdapter)填充视图分页器。