আপনি যদি এমন কোনও ব্যবহার করছেন না Custom View
যা স্পষ্টভাবে ওভাররাইড করেonPerformClick
, সেক্কোর উত্তর অনুসরণ করে সতর্কতাটি সরানো হবে না।
তার উত্তর ছাড়াও, মত android.widget.Button
বা ক্লাসে একই কাজ করার জন্যButton
আপনাকে একটি সাধারণ কাস্টম ভিউ তৈরি করতে হবে যা লক্ষ্য দর্শনে প্রসারিত।
উদাহরণ:
কাস্টম ভিউ ক্লাস:
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();
}
}
এক্সএমএল :
<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" />
জাভা :
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;
}
});
বর্তমান সমস্যাগুলি: সতর্কতা আইডিই দ্বারা সমাধান হয়ে যায়, তবে এটি বাস্তব অ্যান্ড্রয়েড ডিভাইসে কার্যকরভাবে ক্লিক ক্রিয়া দেখতে পাচ্ছে না can't
সম্পাদনা : ক্লিক ইভেন্টটি স্থির করে: ব্যবহার করুনView.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()
। বাস্তবায়নটি সামান্য শব্দ বাজবে (আপনি যদি এটি আপনার ডিভাইসে এটি সক্ষম করে থাকেন) এবং অন ক্লিকলিস্টনারকে কল করুন যে আপনি সম্ভবত ওভাররাইড করেন নি