2013-08-01 153 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); 
    } 
}