我已经为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
来自DOCSHandling custom touch events
自定义视图控件可能需要非标准的触摸事件行为。例如,自定义控件可以使用onTouchEvent(MotionEvent)
侦听器方法检测ACTION_DOWN
和ACTION_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/