在另一个RelativeLayout中膨胀RelativeLayout

时间:2018-08-21 04:54:49

标签: android android-layout kotlin android-relativelayout

我试图将自定义列表视图的布局模型包含在一个自定义列表视图layout.xml文件中,然后使用自定义适配器类(通过kotlin)对其进行充气。

数据看起来很好,并且行格式是准确的,除了每行重复标题是例外。我猜想我可以将标题移出列表视图layout.xml文件,但我希望保留该自包含内容,以便可以重复使用。

这是有问题的布局文件:

.catch()

我相信解决方案将是弄清楚如何选择estimated_ftp_row id并对其进行充气,而不是对整个estimated_fto.xml文件进行充气。

这是适配器中的代码,用于在getView方法中进行膨胀之前选择布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<!-- Header aligned to top -->

<RelativeLayout
    android:id="@+id/estimated_ftp_header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:background="@color/colorHeader"
    android:gravity="start" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:text="@string/estimated_ftp"
        android:textColor="#000"
        android:textSize="20sp" />
</RelativeLayout>

<!-- Content below header -->

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:layout_below="@id/estimated_ftp_header"
    android:orientation="horizontal"
    android:padding="6dip"
    android:id="@+id/estimated_ftp_row">

    <ImageView
        android:contentDescription="@string/ftp_type"
        android:id="@+id/ftp_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/centerPoint"
        android:gravity = "center|end|end"
        android:src="@drawable/glyphicons_13_heart"/>

    <TextView
        android:id="@+id/centerPoint"
        android:text=""
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" />

    <TextView
        android:id="@+id/ftp_value"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@+id/centerPoint"
        android:gravity = "center|start|start"
        android:text="141 bpm"/>

</RelativeLayout>

我该如何更改inflater.inflate使其在R.layout.estimated_ftp中膨胀?

FWIW,活动的XML布局在用作占位符的位置中具有ListView控件。它不引用自定义布局文件。该连接是通过上述适配器类完成的。不知道这是不是一个问题,所以我想提一下...

预先感谢您的任何建议。

迈克

解决方案更新: https://stackoverflow.com/users/2850651/mike-m得到了我需要的指导。我能够将行格式与标头格式XML布局分开。适配器未更改,如果发现有问题的列表的内容,活动将添加新的代码以添加标题。

val inflater = activity?.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
view = inflater.inflate(R.layout.estimated_ftp, null)
viewHolder = ViewHolder(view)
view?.tag = viewHolder

1 个答案:

答案 0 :(得分:0)

解决方案:

https://stackoverflow.com/users/2850651/mike-m得到了我需要的指导。我能够将行格式与标头格式XML布局分开。适配器未更改,如果发现有问题的列表的内容,活动将添加新的代码以添加标题。

val headerView = layoutInflater.inflate(R.layout.estimated_ftp_head, null)
estimated_ftp_list.addHeaderView(headerView)