নিম্নলিখিতগুলি করার পরে আমার বোতামটি হাইলাইট অবস্থায় থাকতে সমস্যা হচ্ছে:
public class MainActivity extends AppCompatActivity {
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppCompatButton button = (AppCompatButton) findViewById(R.id.mybutton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Test", "calling onClick");
}
});
button.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
v.getBackground().setColorFilter(0xe0f47521,PorterDuff.Mode.SRC_ATOP);
v.invalidate();
break;
}
case MotionEvent.ACTION_UP: {
v.getBackground().clearColorFilter();
v.invalidate();
v.performClick();
Log.d("Test", "Performing click");
return true;
}
}
return false;
}
});
}
}
উপরের কোডটি সম্পর্কিত, এটি ব্যবহার করার সময়, আমি প্রত্যাশা করছি বোতামটি ক্লিকটি টাচ দ্বারা পরিচালিত হবে এবং "সত্য" ফিরিয়ে হ্যান্ডলিং টাচলাইস্টেনারে থামানো উচিত।
তবে এই ঘটনাটি নয়। ক্লিক করার পরেও বোতামটি হাইলাইট অবস্থায় থাকে।
যা পাই তা হ'ল:
Test - calling onClick
Test - Performing click
অন্যদিকে, যদি আমি নিম্নলিখিত কোডটি ব্যবহার করি তবে বোতামটি ক্লিক করা হয়, একই প্রিন্টগুলি হয়, তবে বোতামটি হাইলাইট অবস্থায় আটকে যায় না:
public class MainActivity extends AppCompatActivity {
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppCompatButton button = (AppCompatButton) findViewById(R.id.mybutton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Test", "calling onClick");
}
});
button.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
v.getBackground().setColorFilter(0xe0f47521,PorterDuff.Mode.SRC_ATOP);
v.invalidate();
break;
}
case MotionEvent.ACTION_UP: {
v.getBackground().clearColorFilter();
v.invalidate();
// v.performClick();
Log.d("Test", "Performing click");
return false;
}
}
return false;
}
});
}
}
টাচ ইভেন্টে প্রতিক্রিয়াশীল চেইন কী তা নিয়ে আমি কিছুটা বিভ্রান্ত। আমার অনুমান যে এটি:
1) টাচলিস্টনার
2) ক্লিকলিস্টার
3) প্যারেন্টভিউ
কেউ কি এটিও নিশ্চিত করতে পারেন?