我有一个ScrollView,顶部有一个标题类型的视图,一个TabStrip和一个ViewPager。 ViewPager水平滑动但不垂直滑动。此外,标题占据了高度的近75%,我只能看到ViewPager的一部分,因为没有滚动。这是我的布局。
活动布局
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- Content here -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageView78"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:scaleType="fitXY"
android:src="@drawable/user_profile_img_bg_img" />
<ImageView
android:id="@+id/imageView79"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_marginTop="20dp"
android:src="@drawable/user_profile_button_back" />
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView80"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingRight="2dp"
android:src="@drawable/user_profile_ic_edit_profile" />
<ImageView
android:id="@+id/imageView81"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingLeft="2dp"
android:src="@drawable/user_profile_ic_navigation" />
</LinearLayout>
<ImageView
android:id="@+id/imageView82"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/imageView79"
android:layout_below="@+id/linearLayout"
android:layout_marginTop="76dp"
android:src="@drawable/user_profile_img_profile_pic" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView82"
android:layout_marginLeft="40dp"
android:alpha="0.8"
android:text="User Name"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:typeface="sans" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView6"
android:layout_marginLeft="40dp"
android:layout_marginTop="5dp"
android:orientation="horizontal">
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:alpha="0.8"
android:paddingRight="2dp"
android:text="54"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#FFFFFF"
android:typeface="sans" />
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:alpha="0.8"
android:paddingLeft="2dp"
android:paddingRight="3dp"
android:text="Photos"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#FFFFFF"
android:typeface="sans" />
<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:alpha="0.8"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:text="|"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#FFFFFF"
android:typeface="sans" />
<TextView
android:id="@+id/textView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:alpha="0.8"
android:paddingLeft="3dp"
android:paddingRight="2dp"
android:text="45"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#FFFFFF"
android:typeface="sans" />
<TextView
android:id="@+id/textView13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:alpha="0.8"
android:paddingLeft="2dp"
android:text="Fives"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#FFFFFF"
android:typeface="sans" />
</LinearLayout>
</RelativeLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</com.galleri5.android.utils.VerticalScrollView>
ViewPager的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#343031">
<TextView
android:id="@+id/textView14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="15dp"
android:text="User Name Commented on this" />
<ImageView
android:id="@+id/imageView83"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView14"
android:scaleType="fitXY"
android:src="@drawable/user_profile_activity_1_shape_thin_line_separator" />
<LinearLayout
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView83"
android:layout_marginBottom="15dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="15dp"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView84"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingRight="5dp"
android:src="@drawable/user_profile_activity_1_img_gallery_1_icon" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/imageView84"
android:orientation="vertical"
android:paddingLeft="5dp">
<TextView
android:id="@+id/textView17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="2dp"
android:text="Wilderness" />
<TextView
android:id="@+id/textView18"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="2dp"
android:text="2 hrs."
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="12sp" />
</LinearLayout>
<ImageView
android:id="@+id/imageView85"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:src="@drawable/user_profile_button_follow" />
</RelativeLayout>
</LinearLayout>
<ImageView
android:id="@+id/imageView86"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linear"
android:layout_marginBottom="20dp"
android:src="@drawable/user_profile_activity_1_img_img"
android:scaleType="fitXY" />
<LinearLayout
android:id="@+id/linear1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView86"
android:layout_marginBottom="20dp"
android:layout_marginLeft="25dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView87"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingRight="5dp"
android:src="@drawable/user_profile_activity_1_img_user_icon" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:orientation="vertical"
android:paddingLeft="5dp">
<TextView
android:id="@+id/textView19"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="2dp"
android:text="Username" />
<TextView
android:id="@+id/textView20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="2dp"
android:text="234 Fives"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
<ImageView
android:id="@+id/imageView88"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linear1"
android:scaleType="fitXY"
android:src="@drawable/user_profile_activity_1_shape_thin_line_separator" />
<TextView
android:id="@+id/textView21"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView88"
android:layout_marginBottom="15dp"
android:layout_marginLeft="25dp"
android:layout_marginRight="15dp"
android:layout_marginTop="15dp"
android:inputType="textMultiLine"
android:text="Lorem ipsum dolor sit amet conseceur di..." />
<ImageView
android:id="@+id/imageView89"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView21"
android:scaleType="fitXY"
android:src="@drawable/user_profile_activity_1_shape_thin_line_separator" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView89"
android:layout_marginBottom="15dp"
android:layout_marginLeft="25dp"
android:layout_marginRight="20dp"
android:layout_marginTop="15dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:orientation="horizontal">
<TextView
android:id="@+id/textView22"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingRight="3dp"
android:text="Five This!"
android:textSize="13sp" />
<TextView
android:id="@+id/textView23"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:text="|" />
<TextView
android:id="@+id/textView24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingLeft="3dp"
android:text="Comment"
android:textSize="13sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView90"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingRight="2dp"
android:src="@drawable/user_profile_activity_1_ic_five_count" />
<TextView
android:id="@+id/textView25"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingLeft="2dp"
android:paddingRight="5dp"
android:text="23"
android:textSize="13sp" />
<ImageView
android:id="@+id/imageView91"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingLeft="5dp"
android:paddingRight="2dp"
android:src="@drawable/user_profile_activity_1_ic_comments_count" />
<TextView
android:id="@+id/textView26"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingLeft="2dp"
android:text="4"
android:textSize="13sp" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
注意:如果我将ViewPager的高度更改为800dp
,那么我可以垂直滑动也可以水平滑动。唯一的问题是,在目前的情况下,ViewPager的内容下面有空格,如果我添加更多内容,给定的高度可能不够。如何正确找到ViewPager的高度,以便在ViewPager的内容之后没有间隙?
编辑:我在stackoverflow线程中找到了以下代码,以在ScrollView中查找ViewPager的高度。但是我不明白如何使用这个代码以及在哪里。
mViewPager = new ViewPager(mContext) {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
View view = getChildAt(this.getCurrentItem());
if (view != null) {
view.measure(widthMeasureSpec, heightMeasureSpec);
}
setMeasuredDimension(getMeasuredWidth(), measureHeight(heightMeasureSpec, view));
}
private int measureHeight(int measureSpec, View view) {
int result = 0;
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
if (specMode == MeasureSpec.EXACTLY) {
result = specSize;
} else {
// set the height from the base view if available
if (view != null) {
result = view.getMeasuredHeight();
}
if (specMode == MeasureSpec.AT_MOST) {
result = Math.min(result, specSize);
}
}
return result;
}
};