LinearLayout 在 RelativeLayout 内的高度为 0
Posted
技术标签:
【中文标题】LinearLayout 在 RelativeLayout 内的高度为 0【英文标题】:LinearLayout have height 0 inside RelativeLayout 【发布时间】:2017-10-14 00:23:30 【问题描述】:我有 RecyclerView 的项目
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_marginLeft="@dimen/default_padding"
android:layout_marginRight="@dimen/default_padding"
android:layout_
android:layout_>
<RelativeLayout
android:id="@+id/item_layout"
android:layout_
android:layout_>
<LinearLayout
android:id="@+id/deviders_layout"
android:orientation="vertical"
android:layout_
android:layout_
android:layout_centerInParent="true">
<View
android:layout_weight="1"
android:background="@color/divider"
android:layout_marginLeft="@dimen/bonus_circle_line_padding"
android:layout_
android:layout_
android:id="@+id/devider_top" />
<View
android:layout_weight="1"
android:background="@color/divider"
android:layout_marginLeft="@dimen/bonus_circle_line_padding"
android:layout_
android:layout_
android:id="@+id/devider_bottom" />
</LinearLayout>
<RelativeLayout
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:layout_centerInParent="true"
android:layout_
android:layout_>
<bank.ui.view.FlexibleСircleText
android:id="@+id/value_text"
android:layout_
android:layout_/>
<LinearLayout
android:orientation="vertical"
android:layout_marginLeft="@dimen/default_padding"
android:layout_marginRight="@dimen/default_padding"
android:layout_
android:minHeight="@dimen/bonus_circle_text_max_diameter"
android:layout_
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/value_text"
android:layout_toEndOf="@+id/value_text"
android:id="@+id/linearLayout2">
<TextView
android:textSize="@dimen/font_size_standard"
android:text="text"
android:id="@+id/text"
android:layout_marginBottom="2dp"
android:gravity="bottom"
android:layout_weight="1"
android:layout_
android:layout_ />
<TextView
android:textColor="@color/text_grey"
android:textSize="@dimen/font_size_small"
android:text="text"
android:id="@+id/amount"
android:layout_marginTop="2dp"
android:gravity="top"
android:layout_weight="1"
android:ellipsize="end"
android:layout_
android:layout_ />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
项目的所有元素都具有正常大小,但 id 为“deviders_layout”大小的布局始终具有高度 = 0;
我尝试添加
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
使用 id "deviders_layout" 进行布局。这对我不起作用。
设计
【问题讨论】:
你能添加你想要的设计吗? @vivekmahajan 添加在描述中 【参考方案1】:RelativeLayout
id item_layout
的高度设置为 wrap_content
,它有 2 个子布局:
高度设置为wrap_content
的RelativeLayout
和高度非空的内容
ID 为deviders_layout
的LinearLayout
的高度设置为match_parent
,内容也设置为match_parent
。使用此配置,您的布局将始终是“平面”,您需要为内容指定高度并使用 wrap_content
或将 parents 高度设置为 match_parent
【讨论】:
【参考方案2】:试试这个:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="#ffffff"
android:orientation="vertical"
android:paddingLeft="10dp">
<TextView
android:id="@+id/value_text"
android:layout_
android:layout_
android:gravity="center"
android:textSize="16dp"
android:background="@drawable/txt_shape_bg"
android:padding="10dp"
android:text="200" />
<RelativeLayout
android:layout_
android:layout_
android:layout_below="@+id/value_text"
android:layout_marginLeft="20dp"
android:layout_marginTop="0.5dp"
android:background="@color/play_game_controls_background_color"
android:paddingLeft="1dp">
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_
android:layout_
android:layout_alignParentTop="true"
android:background="#ffffff"
android:orientation="vertical"
android:paddingBottom="10dp"
android:paddingLeft="10dp">
<TextView
android:id="@+id/text"
android:layout_
android:layout_
android:layout_marginBottom="2dp"
android:layout_weight="1"
android:gravity="bottom"
android:text="This is Base text"
android:textSize="18sp" />
<TextView
android:id="@+id/amount"
android:layout_
android:layout_
android:layout_marginTop="2dp"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="top"
android:text="200 Childs "
android:textColor="@color/pink"
android:textSize="14sp" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
文本视图的背景 xml 形状:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<corners android:radius="10dip"/>
<stroke android:color="#FF0000" android:/>
<solid android:color="#FF0000"/>
</shape>
【讨论】:
以上是关于LinearLayout 在 RelativeLayout 内的高度为 0的主要内容,如果未能解决你的问题,请参考以下文章
Android:如何让LinearLayout的background在整个屏幕中心显示