在ImageButton上动态设置图像

时间:2014-11-21 05:41:24

标签: android

我环顾四周,但在任何地方都找不到问题的答案。我有一个imageButton,并希望在按下按钮时更改图像。我试图想办法让Eclipse按字面解释我的代码。

String card = nextcard.toString();   //Becomes "Ace_Of_Hearts", for example
theImageButton.setImageResource(R.drawable.card);  //R.drawable.Ace_Of_Hearts is an image in the correct folder

可悲的是,这不起作用。但由于卡变量动态变化,我无法对特定图像进行硬编码以将按钮设置为。那么我应该如何设置图像?

2 个答案:

答案 0 :(得分:0)

您可以使用imagebutton选择器执行此操作。 首先在res / drawable btn_selector.xml中创建选择器

<?xml version="1.0" encoding="utf-8"?>

<item android:drawable="@drawable/button_bg_selected" android:state_selected="true"></item>
<item android:drawable="@drawable/button_bg_normal"></item>

现在您可以将此selctor用作图像按钮的src。

<ImageButton
     android:id="@+id/button1"
     android:src="@drawable/btn_selector"
     android:layout_width="200dp"
     android:layout_height="126dp"/>

答案 1 :(得分:0)

获取可绘制目录中所有卡片的ID:

Integer ace_of_hearts_id = R.drawable.ace_of_hearts;
Integer ace_of_spades_id = R.drawable.ace_of_spades;
Integer queen_of_hearts_id = R.drawable.queen_of_hearts;
Integer ten_of_hearts_id = R.drawable.ten_of_hearts;
....

将ID和字符串名称作为键值对放在HashMap中:

    HashMap cardMap = new HashMap<String,Integer>();
    cardMap.put("ace_of_hearts",ace_of_hearts_id);
    cardMap.put("ace_of_spades" ace_of_spades_id);    
......

然后添加您的代码:

String card = nextcard.toString();   //Becomes "Ace_Of_Hearts", for example
theImageButton.setImageResource(cardMap.get(card));  /

还没有实际编译代码,所以可能会有错误,但这应该给你一个基本的想法。