You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 01:17:16