我需要在ViewPager
内置ScrollView
但ViewPager
只是在ScrollView
内没有显示,当我不使用{{}时一切正常1}}。
我已经在stackoverflow或其他网站上看到过这样的问题,所有这些问题都得到回答,您必须将ScrollView
放到滚动视图中以解决问题,但此解决方案不会即使我的android:fillViewport="true"
中有ViewPager
,android:fillViewport="true"
仍然无效。
我想在android api中有些东西发生了变化,这个解决方案不再适用了,有没有人知道我怎么可能在ScrollView
中出现ViewPager
?
更新:工作的ScrollView布局XML:
ScrollView
答案 0 :(得分:17)
我过去遇到过类似的问题。 View-Pager必须具有设定的高度(它不能包装内容)。由于ViewPager加载了单独的页面,而不是一次加载,因此它不会知道'wrap-content'实际意味着什么。将layout_height设置为fill_parent或设置dp允许ViewPager静态设置其高度,并在其他布局中做出相应的反应。
答案 1 :(得分:7)
public class YourScrollableViewPager extends ViewPager {
private static final int MATCH_PARENT = 1073742592;
private int currentPageNumber;
private int pageCount;
public YourScrollableViewPager(Context context) {
super(context);
prepareUI();
}
public YourScrollableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
prepareUI();
}
private void prepareUI() {
setOffscreenPageLimit(pageCount);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = 0;
if (getChildCount() != 0) {
View child = getChildAt(currentPageNumber);
child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
int h = child.getMeasuredHeight();
if (h > height) height = h;
}
heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
public void onPrevPage() {
onMeasure(MATCH_PARENT, 0);
}
public void onNextPage() {
onMeasure(MATCH_PARENT, 0);
}}
答案 2 :(得分:2)
我使用"HorizontalScrollView"
代替ScrollView
找到了我的解决方案。
首先使用以下代码创建activity_main.xml
,您可以在其中定义ViewPager。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
稍后创建另一个left.xml
来定义HorizontalScrollView
:
<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res
/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher" />
</HorizontalScrollView>
答案 3 :(得分:-1)
只需将android:fillViewport =“true”添加到滚动视图中即可使用