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);
            }
4

4 回答 4

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

代替 a Map,您可以设置按钮标签和图像按钮标签,并用于findViewWithTag()查找与单击的按钮对应的图像按钮。

public void onClick(View v) {
    View btn = findViewWithTag("img" + v.getTag());
    if (btn != null) {
        btn.setVisibility(View.VISIBLE);
    }
}
于 2013-08-01T00:07:45.077 回答
1

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

  android:onclick="myButtonOnClick"

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

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

       }

       // put your logic here. 

  }
于 2013-08-01T00:12:41.503 回答
0

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

于 2013-08-01T00:11:02.853 回答
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);
     }
}
于 2013-08-01T01:09:50.923 回答