android - Android studio中如何自定义ImageView的src属性
问题描述
我想写一个app,有这样一个功能:我提前把800多张照片放到drawable中,编号从a111到a886,然后根据用户输入的年龄、生日等信息计算出一个int类型的数据用户,与图片的编号完全匹配,以便在下一个界面显示。但是ImageView的src属性怎么写,请大家帮帮我!!!
这是我写的XML文件代码:</p>
<ImageView
android:id="@+id/image"
android:layout_gravity="end"
android:layout_columnSpan="8"
android:layout_column="1"
android:layout_row="7"
android:layout_marginLeft="2dp"
android:layout_marginBottom="3dp"
android:src="@drawable/a111"/>
Java文件中第一个接口传入的信息的计算处理结果代码如下:
int qigua=shanggua*100+xiagua*10+dongyao;
"qigua"是最终的结果,所以要显示的图片个数是:a + qigua,但是这个不能直接写在src里,所以我在想怎么把java计算出来的qigua传到XML文件作为图片的编号写入src,或者还有什么其他的方法。
解决方案
您可以做的是使用您的计算创建所需的可绘制 id 作为字符串,然后使用生成的 id 来获取您的资源文件。这是一个如何工作的例子
//Creating id for image
fun getStringResourceId(): String {
//Perform your calculations
var id: String = "a123"
return id
}
//Fetch resource id from the string id
fun convertStringToResourceId(stringId: String): Int {
return context.resources.getIdentifier(stringId, "drawable", context.packageName)
}
//Use the resource id in your ImageView
fun setUserImage(resourceId: Int) {
imageView.setImageResource(resourceId)
}
有关更多信息,您可以参考这个问题
编辑:@richard 这是设置图像的方法
首先,您调用getStringResourceId()
. 这种方法会给你你的qigua
价值。假设它返回一个值a111
。
其次,将此值传递a111
给方法convertStringToResourceId(a111)
。这将做的是返回一个整数资源 id 为存在于的资源R.drawable.a111.jpg
。
最后,您将此整数资源 id 传递给该setUserImage(resourceId)
方法,它将将该可绘制对象设置为您拥有的 imageView。
推荐阅读
- javascript - 从动态创建的子组件更改状态 - React
- react-native - 安装 Camera 和 react-native-qrcode-scanner 时出错(构建失败并出现异常)
- angular - 下拉选择选项上的样式字体
- angular - Angular 8 和链式 observables
- sharepoint-online - 如何从术语集中加载所有托管元数据值
- google-apps-script - 如何将字符串转换为小写字符串?
- ruby-on-rails - 如何向 has_many 关联添加更有意义的错误消息?
- asp.net - “TextBox”类型的控件“windowMasterSearchBox”必须放在带有 runat=server 的表单标签内
- spring-boot - 将 java_opts 传递给 Kubernetes 中的 Spring Boot 应用程序
- visual-studio-2013 - Visual Studio 2013 界面模糊