如何将DrawableId参数传递至XML布局文件?
如何通过include标签向布局传递Drawable参数?
要实现从include标签向item.xml传递Drawable资源ID并设置给ImageView,按以下步骤操作:
1. 启用数据绑定(若未启用)
在模块级build.gradle(或build.gradle.kts)中开启数据绑定:
android { buildFeatures { dataBinding true } }
2. 修改item.xml布局,接收并绑定参数
修改你的item.xml,添加数据绑定变量,并将参数绑定到ImageView的src属性:
<layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!-- 定义接收Drawable资源ID的变量 --> <data> <variable name="drawableResId" type="int" /> </data> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/item" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/icon" android:layout_width="24dp" android:layout_height="24dp" <!-- 通过数据绑定表达式设置ImageView的src --> android:src="@{android.graphics.drawable.Drawable.createFromResource(context, drawableResId)}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> </layout>
3. 在include标签中传递参数
在引用item.xml的布局里,通过include标签直接传递Drawable资源ID:
<include layout="@layout/item" app:drawableResId="@{@drawable/icon}" />
注意事项
- 确保传递的资源ID是有效的Drawable资源,避免出现资源找不到或空指针异常。
- 若项目已使用ViewBinding,数据绑定仍可兼容使用,这种方式更适合跨布局的参数传递场景。
内容的提问来源于stack exchange,提问作者Mustafa Tatarhan
相关产品推荐
相关产品推荐

