有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

定义单击按钮的java

我有9个按钮。 每一个都与redbluegreen并置。 用户必须点击一个绿色方框,然后游戏会给他一分。 因此,为了检查框是否为绿色,我需要定义它,从中获取颜色,并将其与用户必须选择的颜色进行比较,但我有一个问题

问题在于定义单击的按钮以便使用它来getColor()

我可以做9个功能,第一个定义第一个按钮,第二个定义第二个按钮等

但是有没有更快的方法呢

我能做点像这样的事吗

Button button = (Button)findViewById(R.id.THIS_CURRENT_BUTTON);

共 (3) 个答案

  1. # 1 楼答案

    您可以在xml中使用View.setTag()android:tag。当设置按钮绿色时,您可以通过代码btn.setTag("green");设置绿色标签。如果你想知道按钮是什么颜色,你可以通过下面的代码知道:

    String tag = (String) btn.getTag();
    if ("green".equals(tag)) {
        //button is green
    }
    
  2. # 2 楼答案

    对。因为onClick侦听器会将单击的视图传递给它,所以您可以只创建一个onClick侦听器,并将其分配给所有按钮:

    View.OnClickListener listenerToCheckColor = new View.OnClickListener () {
        @Override
        public void onClick(View v) {
            Button button = (Button)v;
            if (((ColorDrawable)button.getBackground()).getColor() == yourGreenColor)
            {
                // + 1 point
            }
        }
    });
    

    从这一行Button b = (Button)v;可以看到,被按下的视图被转换为一个按钮,给您留下一个按钮,就像Button button = (Button)findViewById(R.id.THIS_CURRENT_BUTTON);一样

    创建侦听器后,需要将其分配给每个按钮:

    for(Button button : myArrayOfButtons){
        button.setOnClickListener(listenerToCheckColor);
    }
    
  3. # 3 楼答案

    你不需要单独的9个函数。您可以使用一个功能来检查单击了哪个彩色按钮

    XML布局:

    android:onClick="btnPressed"添加到所有按钮中,如下所示

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="btnPressed"
        android:text="Button"
        android:background="@color/green"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp" />
    

    颜色XML:

    在资源XML中创建颜色,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="colorPrimary">#3F51B5</color>
        <color name="colorPrimaryDark">#303F9F</color>
        <color name="colorAccent">#FF4081</color>
        <color name="green">#008000</color>
        <color name="red">#FF0000</color>
        <color name="yellow">#FFFF00</color>
    </resources>
    

    MainActivity Java文件: 创建btnPressed方法并检查单击了哪个彩色按钮

    public void btnPressed(View view) {
    
        int colorId = ((ColorDrawable) view.getBackground()).getColor();
        int greenColor = ContextCompat.getColor(getApplicationContext(), R.color.green);
    
        if (greenColor == colorId) {
            // Green colored button is clicked
            // Do your code here
        } else {
            // Other colored button clicked
        }
    
    }
    

    希望这会有帮助