配置子视图的高度设置为match_parent时,Android使用错误的父视图

时间:2016-05-23 02:28:11

标签: android android-layout

在下面的代码中,当我将第一个孩子LinearLayout的高度设置为match_parent时,高度会爆炸到屏幕大小。我不知道为什么会这样。父级是RelativeLayout,因此,当LinearLayout的高度设置为RelativeLayout时,第一个孩子match_parent的高度是否恰好与<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:background="@null"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="6dp" android:layout_toStartOf="@+id/vote_container" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:text="1M"/> </LinearLayout> <LinearLayout android:id="@id/vote_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_centerHorizontal="true" android:gravity="center_horizontal"> <ImageButton android:id="@+id/upvote_button" android:layout_width="30dp" android:layout_height="17dp" android:layout_centerHorizontal="true" android:background="@null" android:src="@drawable/ic_keyboard_arrow_up"/> <TextView android:id="@+id/number_of_votes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@id/upvote_button" android:hint="100"/> <ImageButton android:id="@+id/downvote_button" android:layout_width="30dp" android:layout_height="17dp" android:layout_centerHorizontal="true" android:layout_below="@id/number_of_votes" android:background="@null" android:src="@drawable/ic_keyboard_arrow_down"/> </LinearLayout> </RelativeLayout> 的高度匹配?

for i in listRaw:

2 个答案:

答案 0 :(得分:1)

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"

你想要的吗?

答案 1 :(得分:1)

这不一定是问题的解决方案,而是更多的解决方法。我只是将第一个LinearLayout的顶部和底部与第二个LinearLayout的顶部和底部对齐 - @ id / vote_container。假设第一个LinearLayout的高度永远不需要比第二个LinearLayout的高度增大,这应该不是问题。如果是这样,我可以反转他们两个之间的约束关系。

相关代码无效的原因是RelativeLayout的高度设置为wrap_content,第一个LinearLayout的高度设置为{{1}因此,为了计算父级的高度,确定子级的高度,但为了计算第一个子级的高度,确定父级的高度,即创建递归关系,match_parent不做直观地处理它。

在这种情况下会发生的事情是搜索父母的层次结构,直到找到一个高度不是Android的父级,并且该父级的值用于第一个wrap_content的父级。高度。在我的情况下,LinearLayout父级有另一个父级,而且RelativeLayout的高度也设置为LinearLayout,因此唯一的父级值为wrap_content以外的高度1}}是超级视图 - 放置所有其他视图的视图;而且该视图的高度只是屏幕的大小。

这就是我wrap_content的高度达到屏幕大小的原因。