Java ImageView字符串为src

时间:2014-09-10 11:31:17

标签: java android eclipse android-activity

您好我试着解释一下我的意思但是如下:

<ImageView
android:id="@+id/imageLogo"    
android:src="@drawable/logo"        
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ImageView>

我希望src是一个字符串,因此很容易为需要使用它的其他用户进行编辑。问题是android:src不接受带有文件名的@ string / logo。

编辑:要解释一下:我希望我的图像src具有灵活性,所以如果我的客户想要更改他/她的徽标,他/她只需要转到string.xml并更改字符串的值有徽标的名称。但是现在当我考虑它时,他们已经需要访问drawable文件夹来更改它们的图像,所以感谢所有的帮助:D

3 个答案:

答案 0 :(得分:2)

int resourceId = Activity.getResources().getIdentifier(getString(R.string.myComapnyLogo), "drawable", "your.package.name");
image.setImageResource(resourceId);

这里使用getString(R.string.myComapnyLogo)在运行时从xml文件中获取String。 请参阅此documentation

答案 1 :(得分:1)

android:src是指可绘制的图像资源,您不能将其更改为String资源。如果需要,您可以将图像的名称更改为android:src =&#34; @ drawable / imagename&#34;并重命名相应目录中的文件

答案 2 :(得分:1)

你不能在xml中将src作为字符串。

但是您在调用活动中编写自己的代码以使用字符串资源设置图像源。 为此,您必须将您的图像文件放在资产中,您可以参考下面的代码

    ImageView view  = findViewById(R.id.imageLogo);
       AssetManager assetManager = getAssets();
        InputStream istr = null;
        try {
            //R.string.yourstring will be like "sample.png"
            istr = assetManager.open(getResources().getString(R.string.yourstring));
        } catch (IOException e) {
            e.printStackTrace();
        }
        Bitmap bitmap = BitmapFactory.decodeStream(istr);
    view.setImageBitmap(bitmap);