RelativeLayout 中的 ViewPager 和 ViewPagerIndicator 使 RelativeLayout 扩展到整个屏幕
ViewPager and ViewPagerIndicator inside RelativeLayout making RelativeLayout expand through whole screen
这就是给我带来很多问题的原因:
<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 的 child.
整个高度
如果我将RelativeLayout的高度设置为WrapContent,正好有2个问题。
问题 1
ViewPager 将扩展到整个屏幕。它只是不尊重它的 wrap_content 高度属性。但我已经用 this answer 部分解决了这个问题。如果有更好的解决方案,我仍然会很感激。
问题2
我想在它的底部有 CirclePageIndicator parent (RelativeLayout) 所以我添加了属性 layout_alignParentBottom="true" 但是现在正因为如此,RelativeLayout 将出于某种原因扩展到整个屏幕。
所以我想要的是一个环绕 ViewPager 的 RelativeLayout,它环绕它 child。 child 是从网上下载的,所以我不能 pre-set。在那个 RelativeLayout 的底部,我想要一个 ViewPagerIndicator。
至于问题 1 您正确解决了问题,ViewPager
默认情况下不会包装其 children。
至于第二个问题,这是正常的RelativeLayout
行为。如果您将其 height
设置为 wrap_content
并添加两个 children,一个 layout_alignParentTop="true"
,第二个 layout_alignParentBottom="true"
,它们将拉伸您的 layout
height-wise.
你应该做的是:问问自己是否真的需要RelativeLayout
。如果您提供了您的整个布局,我认为不需要 RelativeLayout
(它很昂贵)。垂直 LinearLayout
就可以了。如果您确定确实需要 RelativeLayout
,请尝试将 Indicator's
规则从 layout_alignParentBottom="true"
更改为 android:layout_below="@+id/imageViewPager"
。
这就是给我带来很多问题的原因:
<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 的 child.
整个高度如果我将RelativeLayout的高度设置为WrapContent,正好有2个问题。
问题 1
ViewPager 将扩展到整个屏幕。它只是不尊重它的 wrap_content 高度属性。但我已经用 this answer 部分解决了这个问题。如果有更好的解决方案,我仍然会很感激。
问题2
我想在它的底部有 CirclePageIndicator parent (RelativeLayout) 所以我添加了属性 layout_alignParentBottom="true" 但是现在正因为如此,RelativeLayout 将出于某种原因扩展到整个屏幕。
所以我想要的是一个环绕 ViewPager 的 RelativeLayout,它环绕它 child。 child 是从网上下载的,所以我不能 pre-set。在那个 RelativeLayout 的底部,我想要一个 ViewPagerIndicator。
至于问题 1 您正确解决了问题,ViewPager
默认情况下不会包装其 children。
至于第二个问题,这是正常的RelativeLayout
行为。如果您将其 height
设置为 wrap_content
并添加两个 children,一个 layout_alignParentTop="true"
,第二个 layout_alignParentBottom="true"
,它们将拉伸您的 layout
height-wise.
你应该做的是:问问自己是否真的需要RelativeLayout
。如果您提供了您的整个布局,我认为不需要 RelativeLayout
(它很昂贵)。垂直 LinearLayout
就可以了。如果您确定确实需要 RelativeLayout
,请尝试将 Indicator's
规则从 layout_alignParentBottom="true"
更改为 android:layout_below="@+id/imageViewPager"
。