RecylcerView中的子view matchParent属性失效的问题

问题缘由:需要用RecyclerView实现一个时间轴效果。

RecylcerView中的子view matchParent属性失效的问题_第1张图片

于是顺理成章的想到在RecyclerView的item中拼接出一个时间轴,于是噼里啪啦码下如下的代码:

learLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/item_tend_time_line"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:id="@+id/space_view"

android:layout_width="2dp"

android:layout_marginLeft="16dp"

android:layout_marginStart="16dp"

android:layout_height="45dp"

android:background="@color/tendsBlue"/>

android:layout_marginLeft="7dp"

android:layout_marginStart="7dp"

android:layout_marginTop="8dp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@mipmap/xq_icon_gongsi"/>

android:id="@+id/customer_tends_date"

android:layout_marginLeft="50dp"

android:layout_marginTop="9dp"

android:gravity="center_vertical"

android:text="2016-10-1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

android:id="@+id/item_tend_content_line"

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:layout_marginLeft="13dp"

android:layout_marginStart="13dp"

android:layout_marginTop="28dp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@mipmap/dian"/>

android:id="@+id/time_line"

android:layout_marginLeft="16dp"

android:layout_marginStart="16dp"

android:layout_alignParentTop="true"

android:layout_alignParentBottom="true"

android:layout_width="2dp"

android:layout_height="match_parent"

android:background="@color/tendsBlue"/>

android:id="@+id/item_content_line"

android:layout_marginLeft="30dp"

android:layout_marginStart="30dp"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginRight="20dp"

android:layout_marginEnd="20dp"

android:background="@drawable/tends_pop_bg">

android:id="@+id/item_charge_name"

android:text="樱木花道"

android:textColor="@color/titleActionColor"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

android:id="@+id/item_trend_time"

android:text="12:01"

android:layout_alignParentEnd="true"

android:layout_alignParentRight="true"

android:textColor="@color/titleActionColor"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

android:id="@+id/item_tend_content"

android:layout_marginTop="4dp"

android:layout_below="@id/item_charge_name"

android:minHeight="60dp"

android:maxLines="6"

android:text="这里是客户动态内容"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

android:id="@+id/item_tend_from"

android:layout_marginBottom="4dp"

android:layout_below="@id/item_tend_content"

android:text="来自客户"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

android:id="@+id/item_tend_from_customer"

android:layout_marginBottom="4dp"

android:layout_below="@id/item_tend_content"

android:layout_toRightOf="@id/item_tend_from"

android:layout_toEndOf="@id/item_tend_from"

android:paddingLeft="8dp"

android:text="来自客户"

android:textColor="@color/titleActionColor"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

在preview里面看的效果如下:


RecylcerView中的子view matchParent属性失效的问题_第2张图片


完美,就是产品经理要的效果。

可是真机一运行,问题就出来了


RecylcerView中的子view matchParent属性失效的问题_第3张图片

按理说,View android:id="@+id/time_line" 的高度是match_parent,怎么也不会比在同一个父RelativeLayout下的,wrapcontent的view小啊。可偏偏View android:id="@+id/time_line"就是要比,高度是wrap_content的RelativeLayout android:id="@+id/item_content_line"要短一节。试了试给View android:id="@+id/time_line"添加android:layout_alignParentTop="true"android:layout_alignParentBottom="true"属性,同样无济于事。

于是不得不采用另外一种方法来实现效果:使用shape的stroke属性来实现轴的效果。完美解决了问题。

但是对于上面那种方法失效的原因始终还是耿耿于怀,希望有高手能够不吝赐教

你可能感兴趣的:(RecylcerView中的子view matchParent属性失效的问题)