检测按下了什么按钮?

时间:2013-08-01 00:05:39

标签: android image button pressed click

我有26个不同的按钮,包含字母。我想要的是如果包含D,I,L的按钮应该显示图像按钮,如果点击任何其他按钮,则会发生其他事情。以下是我的尝试,但这似乎没有奏效。我知道onTouchKeyListener(),但它可能真的很大的编码。

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

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

4 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:1)

如果你把按钮放在你的xml文件中,把android:onclick属性放在所有按钮中并链接到同一个函数:

  android:onclick="myButtonOnClick"

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

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

       }

       // put your logic here. 

  }

答案 2 :(得分:0)

我建议使用onTouchKeyListener()和switch语句。

答案 3 :(得分: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);
     }
}