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

如何根据从数据库读取的图片名称为ToggleButton设置图片?

动态根据图片名称为ToggleButton设置图片

其实核心是Android资源都是通过ID引用的,没法直接用字符串名称直接调用,所以我们得先把图片名称字符串转换成对应的资源ID,再去获取Drawable设置到按钮上。具体操作步骤如下:

1. 获取对应图片的资源ID

用getResources().getIdentifier()方法来实现字符串到资源ID的转换,参数分别是资源名称、资源类型(这里是drawable)和应用包名:

String img_str = "p189";
// 转换字符串为drawable资源ID
int drawableResId = getResources().getIdentifier(img_str, "drawable", getPackageName());

2. 获取Drawable并设置到ToggleButton

拿到资源ID后,就可以沿用你之前的逻辑获取Drawable了,记得加个判断避免找不到资源时崩溃:

ToggleButton tb_button = (ToggleButton) findViewById(R.id.tglButton);
if (drawableResId != 0) { // 0表示未找到对应资源
    Drawable img = ResourcesCompat.getDrawable(getResources(), drawableResId, null);
    tb_button.setCompoundDrawables(img, null, null, null);
} else {
    // 可选:资源不存在时的 fallback 处理,比如设置默认图或者清空
    tb_button.setCompoundDrawables(null, null, null, null);
}

一些注意事项

  • 确保你的drawable文件夹里确实存在名为p189的图片,资源名是区分大小写的,别写错啦
  • 如果是在Fragment中使用,要把getResources()换成requireContext().getResources(),getPackageName()换成requireContext().getPackageName()

内容的提问来源于stack exchange,提问作者pamo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:25:02