我想动态地从字符串中设置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。
这是我的图片文件夹:
我把它们设置为AndroidResource(这里显示的是About.png但是Account.png是一样的):
他们在intellisense中显示:
如何从字符串中设置图像源?
答案 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上无法编译的应用程序。