2

我正在尝试使用此Android 将视图寻呼机高度设置为 wrap_content:我无法拥有 ViewPager WRAP_CONTENT

但它在底部留下了额外的空白

如何删除这个空间?

这是我的 xml 代码:

<android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginTop="8dp"
            card_view:cardCornerRadius="@dimen/card_corner_radius">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">


            <com.test.android.custom_views.WrapContentHeightViewPager
                    android:id="@+id/similarRecipesPager"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="8dp"
                    android:visibility="visible" />

            </LinearLayout>
</android.support.v7.widget.CardView>
4

2 回答 2

2

试试这个,如下覆盖你的 onMeasureViewPager将使它获得它当前拥有的最大孩子的高度。

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    int height = 0;
    for(int i = 0; i < getChildCount(); i++) {
        View child = getChildAt(i);
        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);
}
于 2017-01-13T07:08:52.337 回答
0

如果您使用 WRAP_CONTENT 定义您的高度,并且内容不够大,您将有额外的空间,因为这是预期的行为。

如果我对您的理解正确,您希望您的 ViewPager 占据您的活动/片段的所有可能空间,而其他视图也在其中。

如果你想要一个 ViewPager 占用所有可用空间,你应该使用你的weight属性LinearLayout

<LinearLayout android:orientation="vertical"
    android:layout_height="match_parent"
    android:layout_width="match_parent">

    <ViewPager android:id="@+id/my_view_pager"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="1"/>

    <View
        android:id="@+id/other_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

这样,无论您的 viewPager 的内容是什么,它都会填充所有额外的空白区域。

于 2017-01-13T07:24:11.120 回答