使用Kotlin Android扩展以编程方式夸大布局

我有以下布局:

<?xml version="1.0" encoding="utf-8"?> <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" android:background="@android:color/white" android:paddingLeft="20dp" android:paddingRight="20dp"> <TextView android:id="@+id/tvErrorTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:textColor="@android:color/background_dark" android:textSize="18sp" /> <TextView android:id="@+id/tvErrorDesc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:textColor="@android:color/darker_gray" android:textSize="16sp" /> <TextView android:id="@+id/tvAction" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:layout_marginBottom="10dp" android:layout_gravity="end" android:padding="5dp" android:textSize="15sp" android:textStyle="bold" android:textAllCaps="true" android:textColor="@android:color/holo_purple" /> </LinearLayout> 

当我想在下面的活动之外使用kotlin android扩展时 ,它不起作用。 我结束了做findViewById。

 ... ... import kotlinx.android.synthetic.main.dialog_error.* ... ... val view = LayoutInflater.from(context).inflate(R.layout.dialog_error, null, false) val tvErrorTitle = view.findViewById(R.id.tvErrorTitle) as TextView val tvErrorDesc = view.findViewById(R.id.tvErrorDesc) as TextView val tvErrorAction = view.findViewById(R.id.tvAction) as TextView 

它不会直接从XML中获取视图。 如何在programetically膨胀的布局中使用它,并避免findViewById

注意 :此问题严格属于Kotlin Android扩展 ,而不是语言本身。

编辑我已经导入了两个:

 import kotlinx.android.synthetic.main.dialog_error.view.* import kotlinx.android.synthetic.main.dialog_error.* 

但Android Studio仍然尝试从R.id导入,而不能识别这两个导入。 有什么遗漏吗?

从你链接的文档 :

如果我们想在View上调用综合属性(在适配器类中有用),我们也应该导入

 kotlinx.android.synthetic.main.activity_main.view.*. 

也就是说,导入kotlinx.android.synthetic.main.layout.view.*以及加载View扩展属性。

然后:

 val view = LayoutInflater.from(context).inflate(...) view.tvErrorTitle.text = "test"