我正在尝试创建一个RecyclerView项目布局,其中子视图组应该匹配项目的高度,例如,我有一个250dp的高度项目,我有一个LinearLayout,其高度设置为match_parent
它的高度也应该是250dp。
当我尝试这样做时似乎并非如此,LinearLayout高度似乎被强制为wrap_content
这是我用来测试
的示例布局<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_toLeftOf="@+id/ll"
android:background="@color/android_green">
</RelativeLayout>
<LinearLayout
android:layout_width="175dp"
android:layout_height="match_parent"
android:orientation="horizontal"
android:id="@+id/ll"
android:layout_alignParentRight="true"
android:background="@color/android_red">
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
当我设置硬高度(250dp)时,我只看到LinearLayout,如果我将其更改为match_parent则会消失。
使用RecyclerView不再可能吗?
答案 0 :(得分:0)
你说你期望它是250dp对吗?事实是,您的LinearLayout位于辅助(第二个订单)RelativeLayout内。设置match_parent将使其从那里复制高度,而不是具有HardCoded 250dp的3rd Order RelativeLayout。
我建议保留它并在你的java中扩展它,这样你的应用程序就可以在所有设备上运行...... HardCoding数字并不是最好的事情......但是,如果你 DO 需要它正好是250dp,使LinearLayout成为3阶RealativeLayout的子项。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_toLeftOf="@+id/ll"
android:background="@color/android_green">
<LinearLayout
android:layout_width="175dp"
android:layout_height="match_parent"
android:orientation="horizontal"
android:id="@+id/ll"
android:layout_alignParentRight="true"
android:background="@color/android_red">
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
<强>更新强>
我完全同意Mike M.关于删除二阶亲戚关系的评论。它没有任何明显的目的(至少不在提供的代码中)并且无用地使您的程序复杂化。如果您确实需要它,可以尝试寻找不那么混乱的替代布局。
答案 1 :(得分:0)
你能解释一下你面临的问题吗?如果您遇到以下问题,请按以下方式更改为。
请更改您的父布局(LinearLayout&#39; s),即相对布局高度为250dp,现在为match_parent,因此您将获得两个布局大小相同的250dp。 这里下面放了改变的代码,你的意图就是这样,然后把它改成
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="250dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toLeftOf="@+id/ll"
android:background="@color/color_dark_yellow">
</RelativeLayout>
<LinearLayout
android:layout_width="175dp"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:id="@+id/ll"
android:layout_alignParentRight="true"
android:background="@color/color_green_txt">
</LinearLayout>
</RelativeLayout>
答案 2 :(得分:0)
使用以下方法使子视图组匹配父高:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/rl_child"
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_toLeftOf="@+id/ll"
android:background="#00FF00">
</RelativeLayout>
<RelativeLayout
android:id="@+id/ll"
android:layout_width="175dp"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/rl_child"
android:layout_alignParentRight="true"
android:background="#FF0000"
android:orientation="horizontal">
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>