【问题标题】:How to replace R.drawable."someString"如何替换 R.drawable."someString"
【发布时间】:2012-02-28 11:49:27
【问题描述】:

我的项目中有一些图像。图像的名称存储在一个字符串中,我想 setImageResource(R.drawable.".....");使用图像名称的字符串,但问题是这不起作用。

我该怎么做?

【问题讨论】:

  • 图片在哪里?
  • 在我项目的drawable中。
  • 这不是在android中工作的方式,您必须将图像存储在drawable中并通过R.drawable.image访问它

标签: android android-imageview


【解决方案1】:

这不是一个正确的语法,你必须得到编译时错误,在改变图像资源之前你必须知道,所有资源都提供了一个 id,这些 id 存储在 R.java 文件中。 id 存储为整数格式,在您的应用程序中,您可以通过这些 id 获取所有这些资源,而不是通过名称,因此您需要首先获取资源的 id,通过:

String mDrawableName = "myimg";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());

然后使用这个 resID。

【讨论】:

    【解决方案2】:

    使用

    getResources().getIdentifier("NAME_OF_IMAGE", "drawable", context.getPackageName())
    

    【讨论】:

      【解决方案3】:

      看到这个thread。它应该可以帮助你。基本上你需要获取标识符,然后使用setImageResource加载。

      【讨论】:

        【解决方案4】:

        public int getIdentifier(String name, String defType, String defPackage);

        name - 图像的名称
        defType - 它可以根据您的情况绘制
        defPackage - 你的应用程序的默认包(我认为你可以在这个活动上使用 getPackage())

        【讨论】:

          【解决方案5】:

          试试这个

             String uri = "NAME";
          
              // int imageResource = R.drawable.icon;
              int imageResource = getResources().getIdentifier(uri, null, getPackageName());
          
              ImageView imageView = (ImageView) findViewById(R.id.myImageView);
              Drawable image = getResources().getDrawable(imageResource);
              imageView.setImageDrawable(image);
          

          【讨论】:

            【解决方案6】:

            我通过将图像从“drawable”移动到“raw”文件夹并访问下面的字符串值来实现它。 如果'res'目录下没有'raw'文件夹,右键res->new->Android资源目录,在resourcetype下拉菜单下选择'raw'。

                String avatar = ("android.resource://" + "yourPackageName/" + String.valueOf(R.raw.robot_blue));
            

            【讨论】:

              猜你喜欢
              • 2012-10-18
              • 1970-01-01
              • 2013-03-08
              • 2017-05-15
              • 1970-01-01
              • 1970-01-01
              • 2012-09-15
              • 2013-01-11
              • 1970-01-01
              相关资源
              最近更新 更多