2014-11-21 50 views
-1

我环顾四周,但没有在任何地方找到我的问题的答案。我有一个imageButton,并希望在按下按钮时更改图像。我试图找出一种方法让Eclipse从字面上解释我的代码。在ImageButton上动态设置图像

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 

不幸的是,这是行不通的。但是,因为卡片变量动态变化,我不能硬编码特定的图像来设置按钮。那么我应该如何设置图像?

+0

更好地阐述更多细节... – 2014-11-21 05:42:28

+1

里面'if-else'条件改变图像 – kId 2014-11-21 05:46:21

+0

我有一个ImageButton,我想知道的是如何设置图像到该图像按钮。这个网站上的其他答案是不够的,因为他们推荐了一些与“setImageResource(R.drawable.YOUR_IMAGE)”一致的东西,如果你不是硬编码,这是行不通的。 – 2014-11-21 05:47:05

回答

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));/

Havent actua编译代码,所以可能有错误,但这应该给你一个基本的想法。

0

您可以使用imagebutton选择器来做到这一点。 首先创建资源选择/绘制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"/>