当我尝试将OnTouchListner()
添加到按钮时,它为我提供了
按钮调用了setOnTouchListener,但不重写performClick
警告。有人知道怎么修吗?
btnleftclick.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return false;
}
});
出现这个警告是因为Android想要提醒你想想那些可能正在使用你的应用程序的盲人或视障人士。我建议你看这段视频来快速了解一下这是什么样子的。
标准UI视图(像button
、textview
等)的设置都是为了通过辅助功能服务为盲人用户提供适当的反馈。当你尝试自己处理触摸事件时,你有忘记提供反馈的危险。这就是警告的目的。
处理触摸事件通常是在自定义视图中完成的。不要太快地放弃这个选项。其实没那么难。下面是TextView
的完整示例,它被重写以处理触摸事件:
public class CustomTextView extends AppCompatTextView {
public CustomTextView(Context context) {
super(context);
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
return true;
case MotionEvent.ACTION_UP:
performClick();
return true;
}
return false;
}
// Because we call this from onTouchEvent, this code will be executed for both
// normal touch events and for when the system calls this using Accessibility
@Override
public boolean performClick() {
super.performClick();
doSomething();
return true;
}
private void doSomething() {
Toast.makeText(getContext(), "did something", Toast.LENGTH_SHORT).show();
}
}
<com.example.myapp.CustomTextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
android:text="Click me to do something"/>
有关制作自定义视图的更多细节,请参阅我的另一个答案。
其他时候最好只是沉默警告。例如,我不确定您想对需要触摸事件的按钮
做什么。如果您要创建一个自定义按钮,并在OnTouchEvent
中调用PerformClick()
,就像我在上面对自定义TextView
所做的那样,那么它每次都会被调用两次,因为button
已经调用了PerformClick()
。
以下是几个你可能不想发出警告的原因:
将以下行添加到方法的开头以取消显示警告:
@SuppressLint("ClickableViewAccessibility")
例如:
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button myButton = findViewById(R.id.my_button);
myButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return false;
}
});
}
我创建了一个实现一点OpenCV的Android活动。它所做的只是简单地创建一个自定义相机视图,当屏幕被触摸时,照片就会被保存。 我唯一的问题是BaseLoaderCallback内部的代码包含一个警告。 警告 自定义视图com/example/zcameratestv2/version2cameraView调用了setOnTouchListener,但不重写performClick 与其他问题不
我一直在跟一门课,但似乎没有奏效(也可能是我太糟糕了,搞错了什么东西)。 我应该在contenidoactivity.java中输入一个名称,然后按下一个按钮(onclick:enviarNombre被选中),并将该名称获取到destinoactivity.java txt,但它只是停留在那里,当我单击该按钮时,它没有改变任何东西。我已经放了一个吐司“has seleccionado enviar
[在这里输入图像描述][1]这是我的第一个android studio项目。尽管导入了Widget.Button包,但无法调用Button类。Pl指南。[主要活动屏幕快照。[][2
我在https://stackoverflow.com/a/20323723/3888000中搜索如何减少按钮内的填充,发现我应该在xml文件中将按钮的最小高度设置为0dp。是的,它对我有效。 问题是:我想以编程方式创建按钮,而setMinimumHeight(1)和setMinHeight(1)都没有工作。怎么做? 顺便问一下,这两种方法有什么不同? 谢谢!
我有一个订单按钮应该是重定向用户到购物车页面与订购的项目 这是网上的路线。php 这是函数addToCart 但是当我点击按钮时,它不会重定向到购物车页面,它会一直加载到我所做的同一个位置 在函数上,它输出正确的结果
如何在无限次或动态地单击按钮时添加新的?或者简单地说,如何执行添加更多按钮的功能? 我在Javafx中尝试过,但它只是在列表中添加了两个按钮。 但我必须动态添加,直到用户想要添加/按下上一个按钮