Jika Anda tidak menggunakan Custom View
yang secara eksplisit menimpa onPerformClick
, peringatan tidak akan dihapus hanya dengan mengikuti jawaban Secko.
Selain jawabannya, untuk melakukan hal yang sama pada kelas seperti android.widget.Button
atau Button
Anda perlu membuat tampilan kustom sederhana yang memperluas tampilan target.
Contoh:
Kelas Tampilan Kustom:
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" />
Jawa :
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;
}
});
Masalah saat ini: Peringatan diselesaikan oleh IDE, tetapi tidak dapat melihat tindakan klik yang melakukan tindakan ini secara praktis pada Perangkat Android yang sebenarnya.
EDIT : Tetap mendapatkan acara klik: GunakanView.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()
. Implementasinya akan memainkan sedikit suara (jika Anda mengaktifkannya di perangkat Anda) dan memanggil onClickListener, yang mungkin belum Anda timpa