当前位置 : 主页 > 手机开发 > android >

onLongClick用于Android中按钮组的监听器

来源:互联网 收集:自由互联 发布时间:2021-06-11
在我的 Android应用程序中,我想创建一个像键盘一样工作的片段.我有一个函数可以处理所有9个键的onClick.我想要知道是否还要编写一个函数来处理所有这9个键的onLongClick. 这里是布局xml:
在我的 Android应用程序中,我想创建一个像键盘一样工作的片段.我有一个函数可以处理所有9个键的onClick.我想要知道是否还要编写一个函数来处理所有这9个键的onLongClick.

这里是布局xml:

<Button
    android:id="@id/testButton"
    android:layout_width="70dp"
    android:layout_height="55dp"
    android:layout_margin="2dp"
    android:background="@drawable/keypad_round_button"
    android:text="1"
    android:textColor="@color/black_1" 
    android:onClick="keypadSetNote"
    android:longClickable="true"/>
<Button
    android:id="@id/testButton"
    android:layout_width="70dp"
    android:layout_height="55dp"
    android:layout_margin="2dp"
    android:background="@drawable/keypad_round_button"
    android:text="2"
    android:longClickable="true"
    android:textColor="@color/black_1"
    android:onClick="keypadSetNote"
     />

这是OnlongClick监听器:

Button button = (Button) findViewById(R.id.testButton);
    button.setOnLongClickListener(new View.OnLongClickListener() {
        public boolean onLongClick(View v) {
            Button clickedButton = (Button) v;
            String buttonText = clickedButton.getText().toString();
            Log.v(TAG, "button long pressed --> " + buttonText);
            return true;
        }
    });

我给了所有键相同的ID来处理一个函数中的所有onLongClick动作,但它只适用于第一个键.无论如何在Android中定义像组按钮这样的东西???或者我必须分别为所有这些人写OnLongClick监听器???

只需创建一个命名函数而不是匿名函数:

View.OnLongClickListener listener = new View.OnLongClickListener() {
    public boolean onLongClick(View v) {
        Button clickedButton = (Button) v;
        String buttonText = clickedButton.getText().toString();
        Log.v(TAG, "button long pressed --> " + buttonText);
        return true;
    }
};

button1.setOnLongClickListener(listener);
button2.setOnLongClickListener(listener);
button3.setOnLongClickListener(listener);

而且,尽管你没有问它,我们必须警告你:正如@AndyRes所说,你的按钮必须有不同的ID.拥有相同的ID并不意味着按ID获取按钮将返回所有按钮,只返回带有该ID的第一个按钮,这是因为它只适用于第一个按钮.

网友评论