我正在Android上设计一个非常复杂的表单,并且在片段中使用了include
。我基本上有这个:
include_form.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:orientation="vertical"
tools:parentTag="android.widget.LinearLayout">
...
<Spinner
android:id="@+id/desired_time_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:prompt="@string/time_desired_field"
android:spinnerMode="dialog"
tools:listitem="@layout/item_spinner_simple" />
...
</merge>
可以在Android Studio的预览中完美呈现。但是,将其包含在另一个文件中时,如下所示:
fragment_signup.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
...
<include
layout="@layout/include_form"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
...
</LinearLayout>
这可以很好地在设备或模拟器上呈现,但是在Android Studio的预览中无法正确呈现:它基本上会忽略tools:listitem
上的Spinner
属性。
这对于其他组件(例如RecyclerView)也可以正常使用。有人有想法吗,还是我偶然发现了一个错误?谢谢!
**编辑1 **
试图将tools:listitem="@layout/item_spinner_simple"
添加到include
标记中,但这没用。
**编辑2 **
这似乎确实是一个错误。我创建了一个错误报告: https://issuetracker.google.com/issues/132686264