首页 > 解决方案 > 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,或者还有什么其他的方法。

标签: androidandroid-studioimageview

解决方案


您可以做的是使用您的计算创建所需的可绘制 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。


推荐阅读