кнопка нажимается только стилусом

У меня есть кнопка, которую я хотел бы нажимать только стилусом. Я использовал метод setClickable, чтобы включить или отключить нажатие на кнопку, но как я могу сделать так, чтобы нажимать можно было только пером? кнопка должна быть нажата только тогда, когда MotionEvent.TOOL_TYPE_STYLUS

как я могу?


person spyker10    schedule 20.04.2015    source источник


Ответы (1)


вы можете переопределить Button onTouchListener и немедленно вернуть его, если событие касания не выполняется через TOOL_TYPE_STYLUS. Чтобы получить эту информацию, вы можете использовать

getToolType(int pointerX)

Из документации

Получает тип инструмента указателя для заданного индекса указателя

если он возвращает 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;
        }
});
person Blackbelt    schedule 20.04.2015
comment
и как мне обрабатывать setOnClickListener? Что я могу написать для выполнения click ()? - person spyker10; 20.04.2015
comment
performClick — это метод View. он вызывает onClick, если подключен OnClickListener - person Blackbelt; 20.04.2015