【问题标题】:Detect what button was pressed?检测按下了什么按钮?
【发布时间】:2013-08-01 17:28:36
【问题描述】:

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

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

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

【问题讨论】:

  • 检查 button.setOnClickListener()

标签: android image button pressed click


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

        android:onclick="myButtonOnClick"
      

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 我不太确定如何将 onTouchKeyListener() 与 switch 语句一起使用?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-17
        • 2020-12-14
        • 1970-01-01
        • 2013-09-23
        相关资源
        最近更新 更多