ImageView SetImageResource来自字符串动态

时间:2016-09-12 15:29:21

标签: android xamarin imageview

我想动态地从字符串中设置ImageView资源,但我不能用以下方法做到这一点。

我正在使用Xamarin / Android动态设置ImageView资源,如下所示;

ImageView homeItemImage = convertView.FindViewById<ImageView>(Resource.Id.homeItemImage);
int imageId = PlatformProvider.GetImageId(Context, contentTitle.IconImageUrl);
homeItemImage.SetImageResource(imageId);

GetImageId函数:

public static int GetImageId(Context context, string imageName)
{
//   int identifier = context.Resources.GetIdentifier(imageName, "drawable", context.PackageName);
int identifier = context.Resources.GetIdentifier(context.PackageName + ":drawable/" + imageName, null, context.PackageName);
return identifier;
}

我传递的imageName都是wasy,因为“Account.png”或“Account”都将int返回为0。

enter image description here

enter image description here

这是我的图片文件夹:

qqq

我把它们设置为AndroidResource(这里显示的是About.png但是Account.png是一样的):

qqq

他们在intellisense中显示:

qqq

如何从字符串中设置图像源?

1 个答案:

答案 0 :(得分:0)

资源必须not contains special character - &gt;

  

文件夹内的每个文件都被翻译成java字段名称   R.java类:

     

drawable \ icon.png - &gt; R.drawable.icon因此不使用的原因   文件名中的特殊字符,因为它们不能在Java中使用   名。

     

至于大写字母,我想这是为了避免一个小问题   Windows与Linux环境。这是因为Linux认为如此   Icon.png和icon.png是不同的文件,Windows认为   Icon.png和icon.png是同一个文件。所以使用Linux的人都可以   创建在Windows上无法编译的应用程序。