定义单击的按钮

时间:2018-05-23 22:01:50

标签: java android

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

问题在于定义点击的按钮以便将其用于getColor()

我可以制作9个功能,首先定义第一个按钮,第二个定义第二个按钮等。

但有没有更快的方法呢?

我可以做点什么吗

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

3 个答案:

答案 0 :(得分:1)

是。因为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);
}

答案 1 :(得分:0)

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

String tag = (String) btn.getTag();
if ("green".equals(tag)) {
    //button is green
}

答案 2 :(得分:0)

您不需要单独的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
    }

}

希望这会有所帮助!