为啥 ViewPager 需要手动指定高度?

Posted

技术标签:

【中文标题】为啥 ViewPager 需要手动指定高度?【英文标题】:Why does ViewPager need to specify height manually?为什么 ViewPager 需要手动指定高度? 【发布时间】:2020-09-17 05:10:30 【问题描述】:

我有 NestedScrollView 包含 CardView、TabLayout 和 ViewPager。如果我指定 android:layout_height match_parent 或 wrap_content (只有选项卡名称可见),ViewPager 不会在选项卡上显示内容。它仅在我指定 dp 中的值时才有效

我的 XML 布局如下。

<androidx.core.widget.NestedScrollView
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:layout_
        android:layout_>

        <LinearLayout
            android:orientation="vertical"
            android:layout_
            android:layout_>

        <androidx.cardview.widget.CardView
            android:layout_
            android:layout_>
                <TextView
                    android:layout_marginTop="10dp"
                    android:id="@+id/DescriptionTv"
                    android:textStyle="bold"
                    android:text="Post description"
                    android:layout_
                    android:layout_/>
            </LinearLayout>

        </androidx.cardview.widget.CardView>

                <com.google.android.material.tabs.TabLayout
                    app:tabGravity="fill"
                    android:id="@+id/TabLayout"
                    android:layout_
                    android:layout_>
                </com.google.android.material.tabs.TabLayout>

            <androidx.viewpager.widget.ViewPager
                android:id="@+id/Viewpager"
                android:layout_
                android:layout_/>  // I want to avoid specifying values but not working
        </LinearLayout>
    </androidx.core.widget.NestedScrollView>

如何避免在数字中指定 android:layout_height 以使 ViewPager 将其与屏幕匹配为 Normal TabLayout?请帮忙

我尝试在 ViewPager 中添加我的 TabLayout 但不起作用(两者都变得不可见)

【问题讨论】:

【参考方案1】:

您可以使用match_parent,并在ViewPager 中添加View,大小为math_parent

喜欢:

<ViewPager ...layout_>
   <View android:layout_ 
         android:layout_ />
</ViewPager>

【讨论】:

你能分享一个xml代码吗?因为我尝试了大多数对我不起作用的解决方案。 您可以检查已编辑的内容,有时ViewPager 在子视图中无法正常工作。 我已经应用了您的解决方案。我只能看到标签名称。我的片段不可见。 我不确定确切的问题,但您是否考虑过使用约束布局?如果您在约束布局内正确约束它,此布局将允许您在视图寻呼机的宽度和高度上指定 0dp 哦,我错过了,请将View设置为android:visibility="invisible"

以上是关于为啥 ViewPager 需要手动指定高度?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 ViewPager 高度 match_parent 不起作用?

Android中仿淘宝商品详情ViewPager页面数据手动滑动

ViewPager系列:ViewPager+Fragment实现滑动下一页效果

为啥 ViewPager 无限循环不起作用?

为啥手动调整 Visjs 时间线图的高度(可调整大小)不起作用?

为啥会调用fragment的onCreateView、onCreate、onActivityCreated