Custom ViewAçıkça geçersiz kılan bir kullanmıyorsanız onPerformClick, yalnızca Secko'nun cevabını takip ederek uyarı kaldırılmaz.
Cevabına ek olarak, android.widget.Buttonveya gibi sınıflarda aynı Buttonşeyi yapmak için, hedef görünümü genişleten basit bir özel görünüm oluşturmanız gerekir.
Misal :
Özel Görünüm Sınıfı:
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;
}
});
Mevcut sorunlar: Uyarı IDE tarafından çözülür, ancak bu tıklama eyleminin gerçek bir Android Cihazda pratik olarak gerçekleştirildiğini göremez.
DÜZENLEME : Tıklama olayını alma düzeltildi: KullanımView.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(). Uygulama biraz ses çıkarır (cihazınızda etkinleştirdiyseniz) ve muhtemelen geçersiz kılmadığınız onClickListener'ı çağırır