使用ViewPager刷页

时间:2014-05-18 17:25:06

标签: java android android-layout

我正在尝试按行数据块填充页面。我也在使用ViewPager来更改页面。每个页面都应该有自己的数据块,但是现在我得到的线性布局不会滑出(当我在刷页面时块停滞不前)但是还有另一个线性布局正好在其他页面之上,但不会强制数据但是我滑动页面时滑动。

main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<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=".MyActivity">
    <android.support.v4.view.ViewPager
        android:id="@+id/page"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </android.support.v4.view.ViewPager>
    <LinearLayout
        android:orientation="vertical"
        android:id="@+id/page_blocks"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        </LinearLayout>

</RelativeLayout>

table_row:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/program_frame"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="5dip">

    <TextView
        android:id="@+id/StudyName"
        />
    <TextView
        android:id="@+id/Auditorium"
        />
    <TextView
        android:id="@+id/StudyKindName"
        />
    <TextView
        android:id="@+id/LectureTitle"
        />
    <ImageView
        android:id="@+id/imageView2"
         />
</RelativeLayout>

ViewView的创建视图:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.table_row, null);
        framesContainer = (LinearLayout) getActivity().findViewById(R.id.page_blocks);
        for (int i = 0; i < 16; i += 4) {
            Frame frame = new Frame(getActivity());
            try {
                frame.setStudyName(s.get().get(0).Days().get(i));
                frame.setStudyKindName(s.get().get(0).Days().get(i + 1));
                frame.setAuditorium(s.get().get(0).Days().get(i + 2));
                frame.setLectureTitle(s.get().get(0).Days().get(i + 3));
                framesContainer.addView(frame);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
        return view;
    }

另外pic: enter image description here

有没有办法隐藏空块并在刷页后让所有块在页面后滑动?

1 个答案:

答案 0 :(得分:0)

您的问题是您正在使用RelativeLayouts,并且由于您没有对齐其子元素(ViewPager和LinearLayout),它们是重叠的:

<?xml version="1.0" encoding="utf-8"?>
<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=".MyActivity">
    <android.support.v4.view.ViewPager
        android:id="@+id/page"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true" />
    <LinearLayout
        android:orientation="vertical"
        android:id="@+id/page_blocks"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/page" >
    </LinearLayout>

此行告诉viewpager它的位置将位于RelativeLayout的顶部:

android:layout_alignParentTop="true"

这个告诉LinearLayout它的位置在viewpager下面:

android:layout_below="@id/page"

还可以设置其他一些属性 - &gt; RelativeLayout

说实话,我不确定你要做什么。但也许你只需要摆脱RelativeLayout并改为使用LinearLayouts。