我已经为autocompletetextview创建了一个ontouchListener。但是ontouch()方法显示警告:
如果覆盖OntouchEvent或使用OntouchListener的视图也没有实现PerformClick并在检测到单击时调用它,则该视图可能无法正确处理可访问性操作。理想情况下,处理单击操作的逻辑应该放在performclick视图中,因为某些辅助功能服务在发生单击操作时调用performclick。
我不明白这是什么意思。这是密码。

actvEntryCategory.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                try{
                    actvEntryCategory.clearFocus();
                    actvEntryCategory.requestFocus();
                }catch (Exception e){
                    Log.d("eEMP/EntryCreate", "Error raised at EntryCategory touch event due to " + e.toString());
                }
                return false;
            }
        });

我是刚到安多的。任何帮助都将不胜感激。

最佳答案

自动完成文本视图。但是ontouch()方法显示警告:如果重写ontouchevent或使用ontouchListener的视图也没有实现performClick
来自DOCS
Handling custom touch events
自定义视图控件可能需要非标准的触摸事件行为。例如,自定义控件可以使用onTouchEvent(MotionEvent)侦听器方法检测ACTION_DOWNACTION_UP事件并触发特殊的单击事件。为了保持与辅助功能服务的兼容性,处理此自定义单击事件的代码必须执行以下操作:
为解释的单击操作生成适当的AccessibilityEvent。
启用辅助功能服务为无法使用触摸屏的用户执行自定义单击操作。
为了有效地处理这些需求,您的代码应该重写performClick()方法,该方法必须调用此方法的超级实现,然后执行click事件所需的任何操作。当检测到自定义单击操作时,该代码应该调用performClick()方法。下面的代码示例演示此模式。
解决
使用@SuppressLint("ClickableViewAccessibility")忽略此警告
第二种解决方案您的自定义视图应该覆盖performClick()方法,
覆盖文档中performClick()方法的示例代码

class CustomTouchView extends View {

    public CustomTouchView(Context context) {
        super(context);
    }

    boolean mDownTouch = false;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        super.onTouchEvent(event);

        // Listening for the down and up touch events
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                mDownTouch = true;
                return true;

            case MotionEvent.ACTION_UP:
                if (mDownTouch) {
                    mDownTouch = false;
                    performClick(); // Call this method to handle the response, and
                                    // thereby enable accessibility services to
                                    // perform this action for a user who cannot
                                    // click the touchscreen.
                    return true;
                }
        }
        return false; // Return false for other touch events
    }

    @Override
    public boolean performClick() {
        // Calls the super implementation, which generates an AccessibilityEvent
        // and calls the onClick() listener on the view, if any
        super.performClick();

        // Handle the action for the custom click here

        return true;
    }
}

关于android - 自定义 View 'CustomAutoCompleteTextView'已调用setOnTouchListener,但不覆盖performClick,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49850093/

10-08 21:38