检测按下了什么按钮



我有26个不同的包含字母的按钮。在其中,如果包含D,I,L的按钮应该显示图像按钮,如果单击任何其他按钮,则会发生其他事情。以下是我尝试过的,但似乎不起作用。我知道onTouchKeyListener(),但它可能真的需要大量的编码。

imgD.setVisibility(View.INVISIBLE);
imgI.setVisibility(View.INVISIBLE);
imgL.setVisibility(View.INVISIBLE);
            if(d.isPressed()) {
                imgD.setVisibility(View.VISIBLE);
            }

您可以为每个按钮设置一个标记,然后将其用作从字符串到图像按钮的映射中的键。通过这种方式,您可以使用单击侦听器(或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);
    }
}

如果您将按钮放在xml文件中,请将android:onclick属性放在所有按钮中,并链接到相同的函数:

  android:onclick="myButtonOnClick"

然后在您的java代码中,即包含这些按钮的活动中,

  public void myButtonOnClick(View v){
       switch(v.getId()){
       }
       // put your logic here. 
  }

我建议将onTouchKeyListener()与switch语句一起使用。

一种方法是为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);
     }
}

相关内容

  • 没有找到相关文章

最新更新