如何根据从数据库读取的图片名称为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
相关产品推荐
相关产品推荐

