मैं अपने बटन के साथ एक हाइलाइटेड स्थिति में रहने के बाद एक समस्या है, निम्नलिखित करने के बाद:
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) ClickListener
3) जनक दृश्य
क्या कोई इसकी पुष्टि कर सकता है?