【问题标题】:ViewPager and ViewPagerIndicator inside RelativeLayout making RelativeLayout expand through whole screenRelativeLayout 中的 ViewPager 和 ViewPagerIndicator 使 RelativeLayout 扩展到整个屏幕
【发布时间】:2015-10-04 19:53:44
【问题描述】:

这就是给我带来很多问题的原因:

<RelativeLayout
    android:id="@+id/galleryLayout"
    android:layout_width="match_parent"
    android:layout_height="180dp"
    android:background="@color/white">

        <android.support.v4.view.ViewPager
            android:id="@+id/imageViewPager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true" />

        <com.viewpagerindicator.CirclePageIndicator
            android:id="@+id/circlePageIndicator"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:padding="@dimen/padding_middle"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"/>

</RelativeLayout>

目前,此代码有点 有效,因为我已将RelativeLayout 的高度设置为180dp,但我不想这样。我希望整个东西根据 ViewPager 的孩子有高度。

如果我将RelativeLayout 的高度设置为WrapContent,就会出现两个问题。

问题 1

ViewPager 将在整个屏幕上展开。它只是不尊重它的 wrap_content 高度属性。但我已经用this answer 部分解决了这个问题。如果有更好的解决方案,我仍然会很感激。

问题 2

我想在它的父级(RelativeLayout)的底部有 CirclePageIndicator,所以我添加了属性 layout_alignParentBottom="true" 但现在正因为如此,RelativeLayout 将在整个屏幕上扩展一些原因。

所以我想要的是一个 RelativeLayout,它包裹着 ViewPager,它包裹着它的孩子。孩子是从网上下载的,所以我无法预先设置它。在那个 RelativeLayout 的底部,我想要一个 ViewPagerIndicator。

【问题讨论】:

    标签: android android-layout android-viewpager android-xml viewpagerindicator


    【解决方案1】:

    至于问题1你正确解决了这个问题,ViewPager默认不会包裹它的孩子。

    至于第二个问题,这是正常的RelativeLayout 行为。如果您将其height 设置为wrap_content 并添加两个孩子,一个带有layout_alignParentTop="true",第二个带有layout_alignParentBottom="true",它们将拉伸您的layout 高度。

    你应该做的是:问问自己是否真的需要RelativeLayout。如果您提供了您的整个布局,我认为不需要RelativeLayout(它的成本很高)。垂直LinearLayout 就可以了。如果您确定确实需要RelativeLayout,请尝试将您的Indicator's 规则从layout_alignParentBottom="true" 更改为android:layout_below="@+id/imageViewPager"

    【讨论】:

    • 感谢您的回答。问题是我希望指示器“在”ViewPager“内部”,而不是在它下方。所以除了使用RelativeLayout,我别无他法。
    • 您可以随时使用FrameLayoutIndicatorlayout_gravity="bottom"
    • 嗯,这是一个有趣的想法。我没有想到这一点。我现在不能尝试,但我一回到家就会尝试。如果可行,我会回复您并接受您的回答。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多