我正在尝试使用ScrollView中的两个ViewPager创建布局。第一个将高度设置为所需大小,第二个应与其余布局匹配。问题是第二个ViewPager不可见。我究竟做错了什么?这是我的布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/gallery"
android:layout_width="match_parent"
android:layout_height="200dp" />
<android.support.v4.view.ViewPager
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" />
</LinearLayout>
</ScrollView>
</FrameLayout>
我正在使用第二个ViewPager来显示Fragments(使用FragmentPagerAdapter),这是我的FragmentPagerAdapter代码:
public class MainPagerAdapter extends FragmentPagerAdapter {
public MainPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new FirstFragment();
case 1:
return new SecondFragment();
default:
return new FirstFragment();
}
}
@Override
public int getCount() {
return 2;
}
}
FirstFragment代码:
public class FirstFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.first_step, container, false);
}
}
first_step.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<View
android:layout_width="match_parent"
android:layout_height="400dp"
android:background="@android:color/holo_blue_light" />
<View
android:layout_width="match_parent"
android:layout_height="400dp"
android:background="@android:color/holo_green_light" />
</LinearLayout>
答案 0 :(得分:0)
更改
<android.support.v4.view.ViewPager
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" />
到
<android.support.v4.view.ViewPager
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="vertical" />
以及
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
到
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
答案 1 :(得分:0)
如果您使用布局权重。您必须根据使用情况设置宽度或高度布局0dp
这为两个寻呼机提供了相等的空间 按比例给出重量,即2:1或2:1等
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/gallery"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<android.support.v4.view.ViewPager
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical" />
</LinearLayout>
答案 2 :(得分:0)
你必须定义
android:layout_height="200dp"
除去
android:layout_weight="1"
在两个viewpager可见后不设置 android:layout_height =“wrap_content”
答案 3 :(得分:0)
在ScollView中设置fillViewport = true。
我认为如果第二个ViewPager没有固定屏幕高度,ScollView就没用了。
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
答案 4 :(得分:0)
public class Student {
@SerializedName("exam_roll")
@Expose
private String examRoll;
@SerializedName("class_no")
@Expose
private String classNo;
@SerializedName("block_no")
@Expose
private String blockNo;
@Expose
private String name;
/**
*
* @return
* The examRoll
*/
public String getExamRoll() {
return examRoll;
}
/**
*
* @param examRoll
* The exam_roll
*/
public void setExamRoll(String examRoll) {
this.examRoll = examRoll;
}
/**
*
* @return
* The classNo
*/
public String getClassNo() {
return classNo;
}
/**
*
* @param classNo
* The class_no
*/
public void setClassNo(String classNo) {
this.classNo = classNo;
}
/**
*
* @return
* The blockNo
*/
public String getBlockNo() {
return blockNo;
}
/**
*
* @param blockNo
* The block_no
*/
public void setBlockNo(String blockNo) {
this.blockNo = blockNo;
}
/**
*
* @return
* The name
*/
public String getName() {
return name;
}
/**
*
* @param name
* The name
*/
public void setName(String name) {
this.name = name;
}
}
所以你可以这样做,背景只是为了测试,你应该在项目中获得命运以匹配屏幕,而不仅仅是200 * 2:
case ViewPager is a puzzle view,you must set the height for it,then it can
appear in you UI Screen,gallery dont have this problem;
why use ScrollView in this layout, i dont understand.
but,if you use linearlayout