按钮只能用手写笔点击

button clickable only with a stylus

我有一个按钮,我希望它只能用手写笔点击。 我使用方法 setClickable 来启用或禁用按钮上的点击,但我该怎么做才能只用笔点击呢? 只有在 MotionEvent.TOOL_TYPE_STYLUS

时按钮才可以点击

我该怎么做?

您可以立即覆盖 ButtononTouchListener 和 return 如果触摸事件不是通过 TOOL_TYPE_STYLUS 执行的。要检索此信息,您可以使用

getToolType(int pointerX)

来自文档

Gets the tool type of a pointer for the given pointer index

如果它 returns TOOL_TYPE_STYLUS,那么您只需检查 MotionEvent 中的 ACTION_DOWN/ACTION_UP,然后调用 performClick().例如

b.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getToolType(0) == MotionEvent.TOOL_TYPE_STYLUS) {
                if (event.getAction() == MotionEvent.ACTION_UP ) {
                    performClick();
                    return true;
                }
            }
            return false;
        }
});