Falls Sie keine verwenden, Custom View
die explizit überschreibt onPerformClick
, wird die Warnung nicht entfernt, wenn Sie nur Seckos Antwort folgen.
Zusätzlich zu seiner Antwort müssen Sie eine einfache benutzerdefinierte Ansicht erstellen, die die Zielansicht erweitert, um dasselbe für Klassen wie android.widget.Button
oder zu tun Button
.
Beispiel:
Die benutzerdefinierte Ansichtsklasse:
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;
}
});
Aktuelle Probleme: Die Warnung wird von der IDE behoben, kann jedoch nicht sehen, dass diese Klickaktion auf einem echten Android-Gerät praktisch ausgeführt wird.
BEARBEITEN : Das Klickereignis wurde behoben: VerwendenView.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()
. Die Implementierung spielt einen kleinen Ton (wenn Sie ihn auf Ihrem Gerät aktiviert haben) und ruft den onClickListener auf, den Sie wahrscheinlich nicht überschrieben haben