当您两次包含相同的布局时如何使用合成属性

时间:2018-08-14 16:19:00

标签: android kotlin-android-extensions

通常,当我需要在一个屏幕中包含相同的布局时,我会将此布局包装在具有不同ID的两个不同容器中,并在这两个父对象上调用findViewById,但我不知道是否以及如何进行我可以通过kotlin的syntethic属性获得相同的结果。为了更清楚一点:

我处于这样的情况: fragment_xyz.xml 是这样构成的:

<LinearLayout
 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"
 android:orientation="vertical">

  <FrameLayout
    android:id="@+id/include1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white">

    <include layout="@layout/item_detail" />
  </FrameLayout>

  <FrameLayout
    android:id="@+id/include2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white">

    <include layout="@layout/item_detail" />
  </FrameLayout>

</LinearLayout>

item_detail.xml ”的内容与以下内容相似:

<LinearLayout
 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"
 android:orientation="vertical">

    <TextView
      android:id="@+id/title"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

    <TextView
      android:id="@+id/description"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

</LinearLayout>

我想以通常的方式访问这些标题说明

import kotlinx.android.synthetic.main.item_detail.*

但是我需要区分FrameLayout include1 和FrameLayout include2

谢谢!

编辑:错别字。

1 个答案:

答案 0 :(得分:-1)

您需要导入: -0

然后从import kotlinx.android.synthetic.main.fragment_xyz.* framelayoutinclude1获取标题和描述,如下所示:

include2