我正在尝试按行数据块填充页面。我也在使用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:
有没有办法隐藏空块并在刷页后让所有块在页面后滑动?
答案 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。