Android默认按钮监听器?

时间:2011-06-14 21:41:32

标签: android default listener

我的活动有26个按钮(字母表)。对于他们所有人我想拥有相同的onclick-listener。有没有其他方法可以为所有按钮设置“default-onlick-listener”,而无需通过button.setOnClickListener(...)进行设置?

会很棒。

由于

2 个答案:

答案 0 :(得分:2)

在布局中,您可以为每个按钮指定android:onClick。此外,由于这只是另一个属性,您还可以在样式或主题中指定它,有效地设置所有这些属性。

将此作为主题的缺点是onClick将应用于所有视图。可能不是你想要的。所以,我建议只在每个按钮上指定android:onClick

另一种方法是创建一个从Button扩展的自定义视图,并在那里提供常见的onClick功能。

以下是使用android:onClick方法的示例。在您的布局中,定义按钮并提供onClick值:

<Button
    android:id="@+id/button1"
    android:tag="a"
    android:onClick="doSomething"
    ... />

<Button
    android:id="@+id/button2"
    android:tag="a"
    android:onClick="doSomething"
    ... />

<Button
    android:id="@+id/button3"
    android:tag="b"
    android:onClick="doSomething"
    ... />

您的活动将使用doSomething方法:

public void doSomething(View v) {
    // in here, we can branch off based on the ID or the tag.
    switch (v.getId()) {
    case R.id.button1:
        // something
        break;
    case R.id.button2:
        // something
        break;
    case R.id.button3:
        // something
        break;
    }

    if (v.getTag() != null && v.getTag().equals("a")) {
        // do something for the button's tagged with 'a'
    }
}

答案 1 :(得分:1)

尝试在布局xml中使用android:onClick =“OnClickListener”属性。

示例:

<Button 
  android:text="A"
  android:id="@+id/ButtonA"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:onClick="MyOnClickListener">
</Button>