2013-08-01 49 views
0

我有26個不同的按鈕,包含字母。我想要的是如果包含D,I,L的按鈕應該顯示圖像按鈕,如果有其他按鈕被點擊,則發生其他事情。以下是我所嘗試的,但這似乎並沒有工作。我知道onTouchKeyListener(),但它可能真的是巨大的編碼。檢測按下了哪個按鈕?

imgD.setVisibility(View.INVISIBLE); 
imgI.setVisibility(View.INVISIBLE); 
imgL.setVisibility(View.INVISIBLE); 

      if(d.isPressed()) { 
       imgD.setVisibility(View.VISIBLE); 
      } 
+0

檢查button.setOnClickListener() – ddmps

回答

3

您可以爲每個按鈕設置一個標籤,然後將其用作從字符串到圖像按鈕的映射中的一個鍵。這樣您就可以使用單擊監聽器(或onClick方法)並輕鬆獲取適當的圖像。在代碼中,您可以使用setTag(Object)方法。在XML中,您可以使用android:tag="value"屬性。

Map<Object, ImageButton> buttonMap = new HashMap<Object, ImageButton>(); 
// initialize the map 

// later: 
public void onClick(View v) { 
    ImageButton btn = buttonMap.get(v.getTag()); 
    if (btn != null) { 
     btn.setVisibility(View.VISIBLE); 
    } 
} 

取而代之的是Map,你可以設置按鈕標記和圖像按鈕標籤和使用findViewWithTag()找到對應單擊按鈕圖像按鈕。

public void onClick(View v) { 
    View btn = findViewWithTag("img" + v.getTag()); 
    if (btn != null) { 
     btn.setVisibility(View.VISIBLE); 
    } 
} 
0

我推薦使用onTouchKeyListener()和switch語句。

+0

我真的不知道我該如何使用onTouchKeyListener()與switch語句? – ivesingh

1

如果你把按鈕在XML文件中,把機器人:在所有的按鈕鏈接onclick屬性和相同的功能:

android:onclick="myButtonOnClick" 
在Java代碼,即

然後,它包含這些按鈕的活動,

public void myButtonOnClick(View v){ 
     switch(v.getId()){ 

     } 

     // put your logic here. 

    } 
0

一種方式來做到這一點是相同的功能添加到每個按鈕XML

android:onClick="someFunction" 

然後在Java中

public void someFunction(View v) 
{ 
    TextView tv = (TextView)v; // cast the View clicked to a Button 
    String text = v.getText().toString(); // get the text of the Button 
    if ("D".equals(text) || "I".equals(text) || "L".equals(text)) // See if it matches 
    { 
     imgD.setVisibility(View.VISIBLE); 
     imgI.setVisibility(View.VISIBLE); 
     imgL.setVisibility(View.VISIBLE); 
    } 
}