我想从drawable resources文件夹中显示位图图像。当我单击一个对象时,我希望能够显示与该视图对应的图像。这是我的代码和XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black" >
<TextView
android:id="@+id/pokemon_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textColor = "@color/white"
android:layout_marginTop = "6dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ImageView
android:id="@+id/pokemon_image"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_below="@+id/pokemon_name"
android:layout_centerHorizontal="true"
android:layout_marginTop="44dp"
android:contentDescription="@string/cd" />
<ListView
android:id="@+id/listView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/pokemon_image"
android:layout_centerHorizontal="true" >
</ListView>
</RelativeLayout>
所以问题是我通过使用Bitmap创建的图像不会显示出来。我让它遍历我的Drawable Resources文件夹,其中png文件的名称应该等于我单击的对象的名称。在我的日志语句中,它似乎通过了if检查,但是当我尝试运行它时它并没有形成我的图像。
image = (ImageView) findViewById(R.id.pokemon_image);
Field[] fields = R.drawable.class.getFields();
int resourceID = -1;
for(int count=0; count < fields.length; count++)
{
Log.i("Drawable Asset: ", fields[count].getName());
Log.d("tag", "Resource ID is " + resourceID);
Log.d("check", "Resource ID and name are the same: " +
fields[count].getName().equals(name.toLowerCase(Locale.ENGLISH)));
if(fields[count].getName().equals(name.toLowerCase(Locale.ENGLISH)));
{
try {
resourceID=fields[count].getInt(fields[count]);
bm = BitmapFactory.decodeResource(getResources(), resourceID);
image.setImageBitmap(bm);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
任何和所有帮助将不胜感激。
答案 0 :(得分:0)
删除了Oringinal答案,不适用。
新答案:
而不是反思,请使用
Drawable drawable = getResources().getDrawable(getResources()
.getIdentifier(name, "drawable", getPackageName()));
其中name是文件的名称,以便显示drawable。
或者使用资源而不是资源,这在您按姓名查找时更适合。