Nel caso in cui non si utilizzi un Custom Viewoverride esplicito onPerformClick, l'avviso non verrà rimosso semplicemente seguendo la risposta di Secko.
Oltre alla sua risposta, per fare lo stesso su classi come android.widget.Buttono Buttonè necessario creare una semplice visualizzazione personalizzata che estenda la visualizzazione di destinazione.
Esempio :
La classe di visualizzazione personalizzata:
public class UselessButton extends AppCompatButton {
public UselessButton(Context context) {
super(context);
}
public UselessButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public UselessButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean performClick() {
return super.performClick();
}
}
XML :
<stackoverflow.onEarth.UselessButton
android:id="@+id/left"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/left"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.16"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBaseline_toBaselineOf="@+id/right"
app:layout_constraintVertical_bias="0.5" />
Java :
left.setOnTouchListener((v, event) -> {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
enLeft = 1;
enRight = 0;
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
enLeft = 0;
v.performClick();
return false;
} else {
return false;
}
});
Problemi attuali: l'avviso viene risolto dall'IDE, ma non è possibile visualizzare questa azione di clic che esegue praticamente l'azione su un vero dispositivo Android.
EDIT : corretto il recupero dell'evento clic: UsaView.setPressed(boolean)
down.setOnTouchListener((v, event) -> {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
enFront = 0;
enBack = 1;
left.setPressed(true);
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
enBack = 0;
v.performClick();
v.setPressed(false);
return false;
} else {
return false;
}
v.performClick(). L'implementazione riprodurrà un piccolo suono (se lo hai abilitato sul tuo dispositivo) e chiamerà onClickListener, che probabilmente non hai sovrascritto